diff options
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r-- | Zend/zend_operators.c | 12 |
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) { \ |