aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2016-05-31 18:35:52 +0200
committerLukas Larsson <[email protected]>2016-06-14 10:08:28 +0200
commit4f9c3328330df12955a27b455f3763d51f18f4c2 (patch)
tree43f989c51e5877ccb5ce37e5dd9a492b55a58d0e /lib
parent2f3286f7eb10f7460e68cd268651e767e24048ef (diff)
downloadotp-4f9c3328330df12955a27b455f3763d51f18f4c2.tar.gz
otp-4f9c3328330df12955a27b455f3763d51f18f4c2.tar.bz2
otp-4f9c3328330df12955a27b455f3763d51f18f4c2.zip
erl_interface: Fix decode_ulong on windows
Diffstat (limited to 'lib')
-rw-r--r--lib/erl_interface/configure.in4
-rw-r--r--lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c10
2 files changed, 11 insertions, 3 deletions
diff --git a/lib/erl_interface/configure.in b/lib/erl_interface/configure.in
index 9e52a2adcf..0a8fbf513c 100644
--- a/lib/erl_interface/configure.in
+++ b/lib/erl_interface/configure.in
@@ -100,7 +100,9 @@ AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(void *)
AC_CHECK_SIZEOF(long long)
-if test $ac_cv_sizeof_void_p = 8; then
+dnl We set EI_64BIT mode when long is 8 bytes, this makes things
+dnl work on windows and unix correctly
+if test $ac_cv_sizeof_long = 8; then
CFLAGS="$CFLAGS -DEI_64BIT"
fi
diff --git a/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c b/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c
index 30f5fe33a0..cfe9083065 100644
--- a/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c
+++ b/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c
@@ -377,8 +377,14 @@ TESTCASE(test_ei_decode_ulong)
EI_DECODE_2 (decode_ulong, 11, unsigned long, ll(0x8000000000000000));
EI_DECODE_2 (decode_ulong, 11, unsigned long, ll(0xffffffffffffffff));
} else {
- EI_DECODE_2 (decode_ulong, 7, unsigned long, 0x80000000);
- EI_DECODE_2 (decode_ulong, 7, unsigned long, 0xffffffff);
+ if (sizeof(void*) > 4) {
+ /* Windows */
+ EI_DECODE_2_FAIL(decode_ulong, 11, unsigned long, ll(0x8000000000000000));
+ EI_DECODE_2_FAIL(decode_ulong, 11, unsigned long, ll(0xffffffffffffffff));
+ } else {
+ EI_DECODE_2 (decode_ulong, 7, unsigned long, 0x80000000);
+ EI_DECODE_2 (decode_ulong, 7, unsigned long, 0xffffffff);
+ }
}
EI_DECODE_2_FAIL(decode_ulong, 9, unsigned long, ll(0x7fffffffffff));