Show quoted text 12 lines
This issue is caused by your own patch to change the ansistring code to use pass the result by reference.
Original code (using current 2.2.1) was:
# [21] s := foo(s); // This one failes movl -4(%ebp),%eax
call P$PROGRAM_FOO$ANSISTRING$$ANSISTRING
movl %eax,%ebx
leal -4(%ebp),%eax
call FPC_ANSISTR_DECR_REF
movl %ebx,-4(%ebp)
The new code since r9718 is:
# [21] s := foo(s); // This one failes leal -4(%ebp),%edx
movl -4(%ebp),%eax
call P$PROGRAM_FOO$ANSISTRING$$ANSISTRING
Here you can see that the result is at the same location as the parameter. In the original code the value is only assigned to the original location after the call.
The quick-solution is simple: revert r9718 until it works.
Peter
