diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2017-02-05 18:13:24 +0100 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-02-05 18:13:24 +0100 |
| commit | b73190d91903f2fa8487746403efbb006d84321e (patch) | |
| tree | d7d8be68ac250b2587f7edea1df320456adb3f4f | |
| parent | 07d1cd3bc3d12acf64b035d643858d2cf8c97bd1 (diff) | |
| parent | 70b27b5ad874953e76730322e250a7e2d3e77155 (diff) | |
| download | php-git-b73190d91903f2fa8487746403efbb006d84321e.tar.gz | |
Merge branch 'PHP-7.1'
| -rw-r--r-- | Zend/Zend.m4 | 3 | ||||
| -rw-r--r-- | Zend/configure.ac | 8 | ||||
| -rw-r--r-- | configure.ac | 8 | ||||
| -rw-r--r-- | ext/standard/tests/math/bug74039.phpt | 28 |
4 files changed, 38 insertions, 9 deletions
diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 index a1c1d3b07b..f93d507697 100644 --- a/Zend/Zend.m4 +++ b/Zend/Zend.m4 @@ -100,7 +100,8 @@ AC_FUNC_ALLOCA AC_CHECK_FUNCS(memcpy strdup getpid kill strtod strtol finite fpclass sigsetjmp) AC_ZEND_BROKEN_SPRINTF -AC_CHECK_FUNCS(finite isfinite isinf isnan) +AC_CHECK_FUNCS(finite) +AC_CHECK_DECLS([isfinite, isnan, isinf], [], [], [[#include <math.h>]]) ZEND_FP_EXCEPT diff --git a/Zend/configure.ac b/Zend/configure.ac index 5dfdccac6d..31bafdc546 100644 --- a/Zend/configure.ac +++ b/Zend/configure.ac @@ -63,7 +63,7 @@ int zend_sprintf(char *buffer, const char *format, ...); #include <math.h> #ifndef zend_isnan -#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)) @@ -72,18 +72,18 @@ int zend_sprintf(char *buffer, const char *format, ...); #endif #endif -#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 #define zend_isinf(a) 0 #endif -#if defined(HAVE_ISFINITE) || defined(isfinite) +#if defined(HAVE_DECL_ISINFINITE) || defined(isfinite) #define zend_finite(a) isfinite(a) #elif defined(HAVE_FINITE) #define zend_finite(a) finite(a) diff --git a/configure.ac b/configure.ac index 5584a4f43a..8326895a3d 100644 --- a/configure.ac +++ b/configure.ac @@ -68,7 +68,7 @@ int zend_sprintf(char *buffer, const char *format, ...); #include <math.h> #ifndef zend_isnan -#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)) @@ -77,18 +77,18 @@ int zend_sprintf(char *buffer, const char *format, ...); #endif #endif -#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 #define zend_isinf(a) 0 #endif -#if defined(HAVE_ISFINITE) || defined(isfinite) +#if defined(HAVE_DECL_ISINFINITE) || defined(isfinite) #define zend_finite(a) isfinite(a) #elif defined(HAVE_FINITE) #define zend_finite(a) finite(a) 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) |
