Wrong size for Int in arguments to functions wrapped to FunPtr by FFI wrappers (on 64-bit machine)
An operation
foo :: Int -> IO ()
is wrapped to a function pointer ptr :: FunPtr (Int -> IO ())
(via an FFI wrapper). If you pass this pointer to a C function, that calls it with a negative parameter (e.g. -1), the operation is executed with a positive parameter (something near
4294967295 ( == 2 ^ 32 - 1)
).
This works correctly on x86 (32-bit).
See attachment for an example.
Trac metadata
Trac field | Value |
---|---|
Version | 6.8.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture | x86_64 (amd64) |