As I remember (don’t find the old source) the strcpy code generated an exception, and I notice from the output that the segment was increased. I don’t remember the actual argument (.something), but I wrote the test from this assumption.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Using struct member as argument to invoke (16bit) seems to fail, like:
Test code: (struc.asm):
This works: (return 0)
This fails: (return 1)
Untested on 16bit, but, this seems to work on 32bit:
foo struct
c_b1 db 20 dup(0) ; or whatever string length
c_b2 db 20 dup(0)
foo ends
bar foo <?>
assume edi:PTR foo ; point edi to struct
mov edi, offset bar ; load struct address
invoke strcpy, addr .c_b1, addr string
; blah blah blah
; do stuff
assume edi:nothing
I confirm the second error (struct member as operand for SEG operator)
will be fixed in v2.07.
> Using struct member as argument to invoke (16bit) seems to fail, like:
> invoke strcpy, addr config.cf_path, string
You'll have to provide a full test case. I extended the code and I'm unable to see a problem:
As I remember (don’t find the old source) the strcpy code generated an exception, and I notice from the output that the segment was increased. I don’t remember the actual argument (.something), but I wrote the test from this assumption.