summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-04-06 22:03:44 +0300
committerDmitry Stogov <dmitry@zend.com>2015-04-06 22:03:44 +0300
commit5820be029ae4c9494d21766ef923b661cb06a7ef (patch)
tree75ac6611112ffe41f8ef809e5dbf676d3a720bba /Zend/zend_operators.c
parent9a573790245e192e826a42cd14c51709759c6bc0 (diff)
downloadphp-git-5820be029ae4c9494d21766ef923b661cb06a7ef.tar.gz
0.0 / 0.0 = NaN
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r--Zend/zend_operators.c24
1 files changed, 1 insertions, 23 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 59b8abf7ab..c5ef35331f 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -1064,22 +1064,6 @@ ZEND_API int ZEND_FASTCALL pow_function(zval *result, zval *op1, zval *op2) /* {
}
/* }}} */
-static zend_always_inline void make_inf(zval *result, int neg) /* {{{ */
-{
-#if HAVE_HUGE_VAL_INF
- ZVAL_DOUBLE(result, neg ? -HUGE_VAL : HUGE_VAL);
-#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)
- result->value.ww.w1 = neg ? 0xfff00000 : 0x7ff00000;
- result->value.ww.w2 = 0;
- Z_TYPE_INFO_P(result) = IS_DOUBLE;
-#elif HAVE_ATOF_ACCEPTS_INF
- ZVAL_DOUBLE(neg ? aatof("-INF") : tof("INF"));
-#else
- ZVAL_DOUBLE(result, neg ? (-1.0/0.0) : (1.0/0.0));
-#endif
-}
-/* }}} */
-
ZEND_API int ZEND_FASTCALL div_function(zval *result, zval *op1, zval *op2) /* {{{ */
{
zval op1_copy, op2_copy;
@@ -1090,7 +1074,7 @@ ZEND_API int ZEND_FASTCALL div_function(zval *result, zval *op1, zval *op2) /* {
case TYPE_PAIR(IS_LONG, IS_LONG):
if (Z_LVAL_P(op2) == 0) {
zend_error(E_WARNING, "Division by zero");
- make_inf(result, Z_LVAL_P(op1) < 0);
+ ZVAL_DOUBLE(result, ((double) Z_LVAL_P(op1) / (double) Z_LVAL_P(op2)));
return SUCCESS;
} else if (Z_LVAL_P(op2) == -1 && Z_LVAL_P(op1) == ZEND_LONG_MIN) {
/* Prevent overflow error/crash */
@@ -1107,8 +1091,6 @@ ZEND_API int ZEND_FASTCALL div_function(zval *result, zval *op1, zval *op2) /* {
case TYPE_PAIR(IS_DOUBLE, IS_LONG):
if (Z_LVAL_P(op2) == 0) {
zend_error(E_WARNING, "Division by zero");
- make_inf(result, Z_DVAL_P(op1) < 0.0);
- return SUCCESS;
}
ZVAL_DOUBLE(result, Z_DVAL_P(op1) / (double)Z_LVAL_P(op2));
return SUCCESS;
@@ -1116,8 +1098,6 @@ ZEND_API int ZEND_FASTCALL div_function(zval *result, zval *op1, zval *op2) /* {
case TYPE_PAIR(IS_LONG, IS_DOUBLE):
if (Z_DVAL_P(op2) == 0) {
zend_error(E_WARNING, "Division by zero");
- make_inf(result, Z_LVAL_P(op1) < 0);
- return SUCCESS;
}
ZVAL_DOUBLE(result, (double)Z_LVAL_P(op1) / Z_DVAL_P(op2));
return SUCCESS;
@@ -1125,8 +1105,6 @@ ZEND_API int ZEND_FASTCALL div_function(zval *result, zval *op1, zval *op2) /* {
case TYPE_PAIR(IS_DOUBLE, IS_DOUBLE):
if (Z_DVAL_P(op2) == 0) {
zend_error(E_WARNING, "Division by zero");
- make_inf(result, Z_LVAL_P(op1) < 0.0);
- return SUCCESS;
}
ZVAL_DOUBLE(result, Z_DVAL_P(op1) / Z_DVAL_P(op2));
return SUCCESS;