summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r--Zend/zend_operators.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 505b12c8aa..814e07b9e3 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -186,13 +186,21 @@ ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC)
} \
}
-#define DVAL_TO_LVAL(d, l) \
+#ifdef _WIN64
+# define DVAL_TO_LVAL(d, l) \
+ if ((d) > LONG_MAX) { \
+ (l) = (long)(unsigned long)(__int64) (d); \
+ } else { \
+ (l) = (long) (d); \
+ }
+#else
+# define DVAL_TO_LVAL(d, l) \
if ((d) > LONG_MAX) { \
(l) = (unsigned long) (d); \
} else { \
(l) = (long) (d); \
}
-
+#endif
#define zendi_convert_to_long(op, holder, result) \
if (op == result) { \