summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2017-02-05 18:10:04 +0100
committerNikita Popov <nikita.ppv@gmail.com>2017-02-05 18:10:04 +0100
commit70b27b5ad874953e76730322e250a7e2d3e77155 (patch)
treed872033c1f934f53c9bb2395d58b9b9bf9ca63ac /ext
parentb87e399393816d966703fded907f8fc8f9afa5c1 (diff)
parent9ea0949f43959ff0cf519e7a10ef9de7a538cde3 (diff)
downloadphp-git-70b27b5ad874953e76730322e250a7e2d3e77155.tar.gz
Merge branch 'PHP-7.0' into PHP-7.1
Diffstat (limited to 'ext')
-rw-r--r--ext/standard/config.m412
-rw-r--r--ext/standard/tests/math/bug74039.phpt28
2 files changed, 34 insertions, 6 deletions
diff --git a/ext/standard/config.m4 b/ext/standard/config.m4
index f2a1925d1e..3324ee7a16 100644
--- a/ext/standard/config.m4
+++ b/ext/standard/config.m4
@@ -359,7 +359,7 @@ AC_TRY_RUN([
#include <math.h>
#include <stdlib.h>
-#ifdef HAVE_ISNAN
+#ifdef HAVE_DECL_ISNAN
#define zend_isnan(a) isnan(a)
#elif defined(HAVE_FPCLASS)
#define zend_isnan(a) ((fpclass(a) == FP_SNAN) || (fpclass(a) == FP_QNAN))
@@ -390,11 +390,11 @@ AC_TRY_RUN([
#include <math.h>
#include <stdlib.h>
-#ifdef HAVE_ISINF
+#ifdef HAVE_DECL_ISINF
#define zend_isinf(a) isinf(a)
#elif defined(INFINITY)
/* Might not work, but is required by ISO C99 */
-#define zend_isinf(a) (((a)==INFINITY)?1:0)
+#define zend_isinf(a) (((a)==INFINITY || (a)==-INFINITY)?1:0)
#elif defined(HAVE_FPCLASS)
#define zend_isinf(a) ((fpclass(a) == FP_PINF) || (fpclass(a) == FP_NINF))
#else
@@ -424,11 +424,11 @@ AC_TRY_RUN([
#include <math.h>
#include <stdlib.h>
-#ifdef HAVE_ISINF
+#ifdef HAVE_DECL_ISINF
#define zend_isinf(a) isinf(a)
#elif defined(INFINITY)
/* Might not work, but is required by ISO C99 */
-#define zend_isinf(a) (((a)==INFINITY)?1:0)
+#define zend_isinf(a) (((a)==INFINITY || (a)==-INFINITY)?1:0)
#elif defined(HAVE_FPCLASS)
#define zend_isinf(a) ((fpclass(a) == FP_PINF) || (fpclass(a) == FP_NINF))
#else
@@ -459,7 +459,7 @@ AC_TRY_RUN([
#include <math.h>
#include <stdlib.h>
-#ifdef HAVE_ISNAN
+#ifdef HAVE_DECL_ISNAN
#define zend_isnan(a) isnan(a)
#elif defined(HAVE_FPCLASS)
#define zend_isnan(a) ((fpclass(a) == FP_SNAN) || (fpclass(a) == FP_QNAN))
diff --git a/ext/standard/tests/math/bug74039.phpt b/ext/standard/tests/math/bug74039.phpt
new file mode 100644
index 0000000000..dd0e1fa260
--- /dev/null
+++ b/ext/standard/tests/math/bug74039.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Bug #74039: is_infinite(-INF) returns false
+--FILE--
+<?php
+
+var_dump(is_finite(INF));
+var_dump(is_infinite(INF));
+var_dump(is_nan(INF));
+
+var_dump(is_finite(-INF));
+var_dump(is_infinite(-INF));
+var_dump(is_nan(-INF));
+
+var_dump(is_finite(NAN));
+var_dump(is_infinite(NAN));
+var_dump(is_nan(NAN));
+
+?>
+--EXPECT--
+bool(false)
+bool(true)
+bool(false)
+bool(false)
+bool(true)
+bool(false)
+bool(false)
+bool(false)
+bool(true)