diff options
author | Patrik Nyblom <[email protected]> | 2011-11-15 20:10:21 +0100 |
---|---|---|
committer | Patrik Nyblom <[email protected]> | 2011-12-02 15:26:16 +0100 |
commit | e04704b1f40511a6e1090b4cb04ef543580cdcc7 (patch) | |
tree | 53b552ed234927259261550f49e88629389e6ba2 /erts/emulator/beam/erl_driver.h | |
parent | e78a1582dc13d770bf1a9de64ff817369c741ef5 (diff) | |
download | otp-e04704b1f40511a6e1090b4cb04ef543580cdcc7.tar.gz otp-e04704b1f40511a6e1090b4cb04ef543580cdcc7.tar.bz2 otp-e04704b1f40511a6e1090b4cb04ef543580cdcc7.zip |
Iron out bugs in Win64 found in daily builds
Almost all uses of the 'long' datatype is removed from VM and tests
Emulator test now runs w/o drivers crashing
Nasty abs bug fixed in VM as well as type errors in allocator debug functions
Still one allocator test that fails, domain knowledge is needed to fix that.
Fix type inconsistency in beam_load causing crashes
Diffstat (limited to 'erts/emulator/beam/erl_driver.h')
-rw-r--r-- | erts/emulator/beam/erl_driver.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/erts/emulator/beam/erl_driver.h b/erts/emulator/beam/erl_driver.h index 547f5b44dc..25483380ed 100644 --- a/erts/emulator/beam/erl_driver.h +++ b/erts/emulator/beam/erl_driver.h @@ -160,10 +160,15 @@ typedef struct { /* * Integer types */ - +#if defined(__WIN32__) && (SIZEOF_VOID_P == 8) +typedef unsigned __int64 ErlDrvTermData; +typedef unsigned __int64 ErlDrvUInt; +typedef signed __int64 ErlDrvSInt; +#else typedef unsigned long ErlDrvTermData; typedef unsigned long ErlDrvUInt; typedef signed long ErlDrvSInt; +#endif #if defined(__WIN32__) typedef unsigned __int64 ErlDrvUInt64; @@ -184,10 +189,7 @@ typedef long long ErlDrvSInt64; */ typedef struct erl_drv_binary { - long orig_size; /* total length of binary */ -#if SIZEOF_LONG < SIZEOF_VOID_P - long _pad; -#endif + ErlDrvSInt orig_size; /* total length of binary */ char orig_bytes[1]; /* the data (char instead of byte!) */ } ErlDrvBinary; |