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.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index cbc1235659..bb6bb68a30 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -34,8 +34,6 @@
#include "ext/bcmath/number.h"
#endif
-#define LONG_SIGN_MASK (1L << (8*sizeof(long)-1))
-
ZEND_API int zend_atoi(const char *str, int str_len)
{
int retval;
@@ -727,8 +725,8 @@ ZEND_API int add_function(zval *result, zval *op1, zval *op2 TSRMLS_DC)
long lval = op1->value.lval + op2->value.lval;
/* check for overflow by comparing sign bits */
- if ( (op1->value.lval & LONG_SIGN_MASK) == (op2->value.lval & LONG_SIGN_MASK)
- && (op1->value.lval & LONG_SIGN_MASK) != (lval & LONG_SIGN_MASK)) {
+ if ( (op1->value.lval & LONG_MIN) == (op2->value.lval & LONG_MIN)
+ && (op1->value.lval & LONG_MIN) != (lval & LONG_MIN)) {
result->value.dval = (double) op1->value.lval + (double) op2->value.lval;
result->type = IS_DOUBLE;
@@ -767,8 +765,8 @@ ZEND_API int sub_function(zval *result, zval *op1, zval *op2 TSRMLS_DC)
long lval = op1->value.lval - op2->value.lval;
/* check for overflow by comparing sign bits */
- if ( (op1->value.lval & LONG_SIGN_MASK) != (op2->value.lval & LONG_SIGN_MASK)
- && (op1->value.lval & LONG_SIGN_MASK) != (lval & LONG_SIGN_MASK)) {
+ if ( (op1->value.lval & LONG_MIN) != (op2->value.lval & LONG_MIN)
+ && (op1->value.lval & LONG_MIN) != (lval & LONG_MIN)) {
result->value.dval = (double) op1->value.lval - (double) op2->value.lval;
result->type = IS_DOUBLE;