From 322b97a19a3a06d7d66e6f74b4dc071384badf64 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 18 Oct 2018 23:16:43 +0200 Subject: [PATCH] Use C++ symbols, when C++11 or upper is compiled --- Zend/configure.ac | 14 +++++++++++--- Zend/zend_config.w32.h | 7 +++++++ configure.ac | 13 ++++++++++--- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/Zend/configure.ac b/Zend/configure.ac index 8252cfb342..694ecbc888 100644 --- a/Zend/configure.ac +++ b/Zend/configure.ac @@ -50,10 +50,16 @@ int zend_sprintf(char *buffer, const char *format, ...); # define zend_sprintf sprintf #endif +#if defined(__cplusplus) && __cplusplus >= 201103L +#include +#define zend_isnan std::isnan +#define zend_isinf std::isinf +#define zend_finite std::isfinite +#else #include #ifndef zend_isnan -#if HAVE_DECL_ISNAN && (!defined(__cplusplus) || __cplusplus < 201103L) +#if 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)) @@ -62,7 +68,7 @@ int zend_sprintf(char *buffer, const char *format, ...); #endif #endif -#if HAVE_DECL_ISINF && (!defined(__cplusplus) || __cplusplus < 201103L) +#if HAVE_DECL_ISINF #define zend_isinf(a) isinf(a) #elif defined(INFINITY) /* Might not work, but is required by ISO C99 */ @@ -73,7 +79,7 @@ int zend_sprintf(char *buffer, const char *format, ...); #define zend_isinf(a) 0 #endif -#if HAVE_DECL_ISFINITE && (!defined(__cplusplus) || __cplusplus < 201103L) +#if HAVE_DECL_ISFINITE #define zend_finite(a) isfinite(a) #elif defined(HAVE_FINITE) #define zend_finite(a) finite(a) @@ -83,6 +89,8 @@ int zend_sprintf(char *buffer, const char *format, ...); #define zend_finite(a) (zend_isnan(a) ? 0 : zend_isinf(a) ? 0 : 1) #endif +#endif + #endif /* ifndef ZEND_ACCONFIG_H_NO_C_PROTOS */ ]) diff --git a/Zend/zend_config.w32.h b/Zend/zend_config.w32.h index 71d550e57b..37442ff018 100644 --- a/Zend/zend_config.w32.h +++ b/Zend/zend_config.w32.h @@ -50,9 +50,16 @@ typedef unsigned int uint; #endif #define strcasecmp(s1, s2) _stricmp(s1, s2) #define strncasecmp(s1, s2, n) _strnicmp(s1, s2, n) +#if defined(__cplusplus) && __cplusplus >= 201103L +#include +#define zend_isnan std::isnan +#define zend_isinf std::isinf +#define zend_finite std::isfinite +#else #define zend_isinf(a) ((_fpclass(a) == _FPCLASS_PINF) || (_fpclass(a) == _FPCLASS_NINF)) #define zend_finite(x) _finite(x) #define zend_isnan(x) _isnan(x) +#endif #define zend_sprintf sprintf diff --git a/configure.ac b/configure.ac index 09cb2706bb..bd9a065ce1 100644 --- a/configure.ac +++ b/configure.ac @@ -59,10 +59,16 @@ int zend_sprintf(char *buffer, const char *format, ...); # define zend_sprintf sprintf #endif +#if defined(__cplusplus) && __cplusplus >= 201103L +#include +#define zend_isnan std::isnan +#define zend_isinf std::isinf +#define zend_finite std::isfinite +#else #include #ifndef zend_isnan -#if HAVE_DECL_ISNAN && (!defined(__cplusplus) || __cplusplus < 201103L) +#if 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)) @@ -71,7 +77,7 @@ int zend_sprintf(char *buffer, const char *format, ...); #endif #endif -#if HAVE_DECL_ISINF && (!defined(__cplusplus) || __cplusplus < 201103L) +#if HAVE_DECL_ISINF #define zend_isinf(a) isinf(a) #elif defined(INFINITY) /* Might not work, but is required by ISO C99 */ @@ -82,7 +88,7 @@ int zend_sprintf(char *buffer, const char *format, ...); #define zend_isinf(a) 0 #endif -#if HAVE_DECL_ISFINITE && (!defined(__cplusplus) || __cplusplus < 201103L) +#if HAVE_DECL_ISFINITE #define zend_finite(a) isfinite(a) #elif defined(HAVE_FINITE) #define zend_finite(a) finite(a) @@ -92,6 +98,7 @@ int zend_sprintf(char *buffer, const char *format, ...); #define zend_finite(a) (zend_isnan(a) ? 0 : zend_isinf(a) ? 0 : 1) #endif +#endif #endif /* ifndef ZEND_ACCONFIG_H_NO_C_PROTOS */ #undef PTHREADS -- 2.49.0