aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_driver.h
diff options
context:
space:
mode:
authorPatrik Nyblom <[email protected]>2011-11-15 20:10:21 +0100
committerPatrik Nyblom <[email protected]>2011-12-02 15:26:16 +0100
commite04704b1f40511a6e1090b4cb04ef543580cdcc7 (patch)
tree53b552ed234927259261550f49e88629389e6ba2 /erts/emulator/beam/erl_driver.h
parente78a1582dc13d770bf1a9de64ff817369c741ef5 (diff)
downloadotp-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.h12
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;