It would be interesting to build a debugging version of J and run it under a C debugger (gdb, visual studio, whatever..) and see what's happening here.
Thanks, -- Raul On Mon, Dec 8, 2014 at 3:42 PM, 'Pascal Jasmin' via General <[email protected]> wrote: > An allocation size error in a non-boxed mapped file correctly preserves the > old contents of the name, but on boxed mapped arrays, the contents of the > variable are destroyed. > > from the lab, > > > jdatafn=: jpath '~temp\jdata.jmf' > createjmf_jmf_ jdatafn;1000 > map_jmf_ 'jdata';jdatafn > > jdata =: i. 2 5 > jdata > 0 1 2 3 4 > 5 6 7 8 9 > > jdata =: jdata , i. 200 5 > |allocation error > | jdata =:jdata,i.200 5 > jdata > 0 1 2 3 4 > 5 6 7 8 9 > NB. above is correct, but > > > jdata =: <"1 i. 2 5 > jdata > ┌─────────┬─────────┐ > │0 1 2 3 4│5 6 7 8 9│ > └─────────┴─────────┘ > > jdata =:jdata, <"1 i.200 5 > |allocation error > | jdata =:jdata,<"1 i.200 5 > jdata NB. empty > > The file on disk is also "destroyed" in that a remapping will also be empty. > This means that you can't use an allocation error as a trigger to resize > > I was already thinking of a workaround that involves checking the size of an > append and resizing if there is a danger of an allocation error > > some utilities: > > getsize_jmf_ =:(1 {::"1 ] (] {~ (< @:[) i.~ {."1@:]) 1 8 {"1 > }.@:showmap_jmf_@:(''"_)) NB. y is mappedfilename > > resize_jmf_ =: 4 : 0 NB. x is newsize (< 5 is multiplier of old size. else is > newsize) y is mappedfilename > 'vname fmapname' =. y > if. 5 > x do. ns =. 8096 ([ * >.@%~) x * getsize fmapname else. ns =. x end. > smoutput ns > unmap_jmf_ vname;ns > map_jmf_ vname;fmapname > ) > > but calling resize causes an error that breaks all future jmf operations > until restart of J (in J6 32 bit anyway), and not sure why. > > 1.2 resize_jmf_ 'jdata_base_';jdatafn > 8096 > |domain error: SetFilePointerR > | SetFilePointerR fh;totsize;NULLPTR;FILE_BEGIN > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
