Hello, everybody,
there's a (probably copy-paste) mistake within the com64.inc. The macro comcall should not push an object handle onto the stack. Thus instead of
macro call dummy
\{ if handle eqtype rax | handle eqtype 0
push handle
local ..handle
label ..handle at handle
mov rax,[..handle]
else
mov rax,handle
mov rax,[rax]
end if
call [rax+interface#.#proc] \}
there should be
macro call dummy
\{ if handle eqtype rax | handle eqtype 0
local ..handle
label ..handle at handle
mov rax,[..handle]
else
mov rax,handle
mov rax,[rax]
end if
call [rax+interface#.#proc] \}
This bug was discovered about a year ago by one of participants of another assembler related forum, but obviously was not reported here. I assume this little modification may be included into the next fasm release package.
Best regards