Skip to content

Commit 8df11d5

Browse files
committed
json_writer: improve isfinite support on *nix
Based on a patches to CMake by: Ådne Hovda <[email protected]>: commit 7b1cdb00279908cacabada92f8a53e4986465423 jsoncpp: Provide 'isfinite' implementation on older AIX and HP-UX Newer AIX and HP-UX platforms provide 'isfinite' as a <math.h> macro. Older versions do not, so add the definition if it is not provided. Michael Scott <[email protected]>: commit 9217b678b305d7df7471ba476a81bf28961fdfa3 jsoncpp: Provide 'isfinite' impl on more HP-UX versions (#15576) Some versions of HP-UX do not define 'isfinite' or 'finite' in math.h for Itanium when preprocessing with C++, so we have to add the definition ourselves instead to map to the internal version. Joerg Sonnenberger <[email protected]>: commit 75644dafe54c21902f14cfe58cb8338b553b69d8 jsoncpp: Fix compilation as C99 on Solaris In C99 mode, Solaris variants may already define isfinite, so check for the existence first.
1 parent 8e400e9 commit 8df11d5

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/lib_json/json_writer.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,25 @@
2020
#include <float.h>
2121
#define isfinite _finite
2222
#elif defined(__sun) && defined(__SVR4) //Solaris
23+
#if !defined(isfinite)
2324
#include <ieeefp.h>
2425
#define isfinite finite
26+
#endif
27+
#elif defined(_AIX)
28+
#if !defined(isfinite)
29+
#include <math.h>
30+
#define isfinite finite
31+
#endif
32+
#elif defined(__hpux)
33+
#if !defined(isfinite)
34+
#if defined(__ia64) && !defined(finite)
35+
#define isfinite(x) ((sizeof(x) == sizeof(float) ? \
36+
_Isfinitef(x) : _IsFinite(x)))
37+
#else
38+
#include <math.h>
39+
#define isfinite finite
40+
#endif
41+
#endif
2542
#else
2643
#include <cmath>
2744
#define isfinite std::isfinite

0 commit comments

Comments
 (0)