Sorry, I still don't see the error. Please refer to
https://code.jsoftware.com/wiki/Vocabulary/Foreigns#m15
and indicate what is being done that doesn't match the description.
Henry Rich
On 2/27/2022 9:58 AM, Raul Miller wrote:
s=: 'Hello world'
write=: {{p [ y memw p,0,(>: # y),2 [ p=. mema >: # y}}
read=: {{res [ memf y [ res=. memr y,0,_1,2}}
(read@write&.> <\ s) -: <\ s
0
Inspecting the result with
(read@write&.> <\ s) (;<)&,. <\ s
We can see a conflict with a statement made at
https://code.jsoftware.com/wiki/Guides/DLLs/Memory_Management (and
other places):
"If type is char, count can be 1 greater than the length of the string
left argument, in which case a 0 is appended (writing a C string)."
------------------
I think the cause here is that the memw code was not updated to cope
with virtual blocks. Prior to j901, that trailing 0 would have been
added to the character list when it was written to memory.
I hope this helps,
--
This email has been checked for viruses by AVG.
https://www.avg.com
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm