Apologies for the cryptic subject...
I have some news about http://bugs.squeak.org/view.php?id=3929 I detected with gdb that the example I provided triggers a FPU stack overflow. When this occurs, a qNan is placed on FPU stack top.
Thus, though ffiFloatReturnValue == 0.0, testing in Smalltalk (self myFFICall = 0.0) will result in 0.0==Nan due to stack overflow. primitive which execute special send #= will incorrectly return false...
Don't tell me to not use = on Floats, this is not the problem, you can replace the test with (self myFFICall < 1.0), you will get (0.0<qNan) -> false all the same.
At this point, I see two possibilities: - either I totally messed up with calling conventions - or the FFI glue ffiCallAddressOf is broken ($VM/Squeak-3.10-1/platforms/unix/plugins/SqueakFFIPrims/x86-sysv-asm)
I have no knowledge about IA-32 and don't wish to learn further, using gdb at instruction level was already painfull enough for me. Can somebody aware of x86 and calling convention check my guess?
Nicolas