summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.c
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2008-08-07 08:36:24 +0000
committerAntony Dovgal <tony2001@php.net>2008-08-07 08:36:24 +0000
commit53a957e5f8d7d0b67aa1b7f7bdf629784a51debd (patch)
treee477857c563f70d7fbf054e7aafce939c0f7a271 /Zend/zend_operators.c
parent471c480d11af22376b4024ed319c005589bee8b3 (diff)
downloadphp-git-53a957e5f8d7d0b67aa1b7f7bdf629784a51debd.tar.gz
MFH: fix bug #45712 ($something == NaN returns true with 5.3, false with 5.2.*)
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r--Zend/zend_operators.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 1eca6aa3ee..24c0cf7a66 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -1383,15 +1383,18 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC)
return SUCCESS;
case TYPE_PAIR(IS_DOUBLE, IS_LONG):
- ZVAL_LONG(result, Z_DVAL_P(op1)>((double)Z_LVAL_P(op2))?1:(Z_DVAL_P(op1)<((double)Z_LVAL_P(op2))?-1:0));
+ Z_DVAL_P(result) = Z_DVAL_P(op1) - (double)Z_LVAL_P(op2);
+ ZVAL_LONG(result, ZEND_NORMALIZE_BOOL(Z_DVAL_P(result)));
return SUCCESS;
case TYPE_PAIR(IS_LONG, IS_DOUBLE):
- ZVAL_LONG(result, ((double)Z_LVAL_P(op1))>Z_DVAL_P(op2)?1:(((double)Z_LVAL_P(op1))<Z_DVAL_P(op2)?-1:0));
+ Z_DVAL_P(result) = (double)Z_LVAL_P(op1) - Z_DVAL_P(op2);
+ ZVAL_LONG(result, ZEND_NORMALIZE_BOOL(Z_DVAL_P(result)));
return SUCCESS;
case TYPE_PAIR(IS_DOUBLE, IS_DOUBLE):
- ZVAL_LONG(result, Z_DVAL_P(op1)>Z_DVAL_P(op2)?1:(Z_DVAL_P(op1)<Z_DVAL_P(op2)?-1:0));
+ Z_DVAL_P(result) = Z_DVAL_P(op1) - Z_DVAL_P(op2);
+ ZVAL_LONG(result, ZEND_NORMALIZE_BOOL(Z_DVAL_P(result)));
return SUCCESS;
case TYPE_PAIR(IS_ARRAY, IS_ARRAY):