com php-src: Fix bug #73954: NEWS Zend/configure.in Zend/tests/bug73954.phpt configure.in
| From: | Andrea Faulds | Date: | Sun, 05 Feb 2017 01:30:20 +0000 |
| Subject: | com php-src: Fix bug #73954: NEWS Zend/configure.in Zend/tests/bug73954.phpt configure.in | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-97022@lists.php.net to get a copy of this message | ||
Commit: 21d7878690c18124fa788f2aa22e505a4fa6ceeb
Author: Andrea Faulds <ajf@ajf.me> Sun, 5 Feb 2017 01:30:20 +0000
Parents: dcaf4da8a6832f5bc1d0dabee08686cd5cf9e801
Branches: PHP-7.0
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=21d7878690c18124fa788f2aa22e505a4fa6ceeb
Log:
Fix bug #73954
Bugs:
https://bugs.php..net/73954
Changed paths:
M NEWS
M Zend/configure.in
A Zend/tests/bug73954.phpt
M configure.in
Diff:
diff --git a/NEWS b/NEWS
index 102c9ea..adc80db 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,7 @@ PHP NEWS
(Nikita)
. Fixed bug #73998 (array_key_exists fails on arrays created by
get_object_vars). (mhagstrand)
+ . Fixed bug #73954 (NAN check fails on Alpine Linux with musl). (Andrea)
- GD:
. Fixed bug #74031 (ReflectionFunction for imagepng is missing last two
diff --git a/Zend/configure.in b/Zend/configure.in
index 29551d9..3c79151 100644
--- a/Zend/configure.in
+++ b/Zend/configure.in
@@ -75,7 +75,7 @@ int zend_sprintf(char *buffer, const char *format, ...);
#elif defined(HAVE_FPCLASS)
#define zend_isnan(a) ((fpclass(a) == FP_SNAN) || (fpclass(a) == FP_QNAN))
#else
-#define zend_isnan(a) 0
+#define zend_isnan(a) ((a) != (a))
#endif
#endif
diff --git a/Zend/tests/bug73954.phpt b/Zend/tests/bug73954.phpt
new file mode 100644
index 0000000..918f24b
--- /dev/null
+++ b/Zend/tests/bug73954.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Bug #73954 (NAN check fails on Alpine Linux with musl)
+--FILE--
+<?php
+
+var_dump(NAN);
+var_dump(is_nan(NAN));
+
+function takes_int(int $int) {
+}
+
+takes_int(NAN);
+
+?>
+--EXPECTF--
+float(NAN)
+bool(true)
+
+Fatal error: Uncaught TypeError: Argument 1 passed to takes_int() must be of the type integer,
float given, called in %s on line 9 and defined in %s:6
+Stack trace:
+#0 %s(9): takes_int(NAN)
+#1 {main}
+ thrown in %s on line 6
diff --git a/configure.in b/configure.in
index a61a85d..b5a3919 100644
--- a/configure.in
+++ b/configure.in
@@ -80,7 +80,7 @@ int zend_sprintf(char *buffer, const char *format, ...);
#elif defined(HAVE_FPCLASS)
#define zend_isnan(a) ((fpclass(a) == FP_SNAN) || (fpclass(a) == FP_QNAN))
#else
-#define zend_isnan(a) 0
+#define zend_isnan(a) ((a) != (a))
#endif
#endif