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) |