]> git.mxchange.org Git - simgear.git/commitdiff
I don't understand why FreeBSD doesn't see isnan() after including math.h
authorcurt <curt>
Sun, 21 Nov 2004 03:13:54 +0000 (03:13 +0000)
committercurt <curt>
Sun, 21 Nov 2004 03:13:54 +0000 (03:13 +0000)
but it doesn't.  Trying the apple approach to fixing isnan results in an
infinite loop (making me wonder what happens on OSX?)  This is an alternative
approach to checking isnan() on freebsd ...

simgear/scene/sky/cloud.cxx
simgear/sound/soundmgr_openal.cxx

index a2b3b66237ed36fd1452e4c7f80ce71e0d077977..e62384b90922e98f2cacc87f1c7250a2fa242aad 100644 (file)
@@ -21,7 +21,7 @@
 // #include <stdio.h>
 #include <math.h>
 
-#if defined (__APPLE__) || defined (__FreeBSD__)
+#if defined (__APPLE__)
 // any C++ header file undefines isinf and isnan
 // so this should be included before <iostream>
 inline int (isinf)(double r) { return isinf(r); }
@@ -45,6 +45,11 @@ inline int (isnan)(double r) { return isnan(r); }
 #define isnan(x) _isnan(x)
 #endif
 
+#if defined (__FreeBSD__)
+inline int isnan(double r) { return !(r < 0 || r > 0); }
+#endif
+
+
 
 static ssgStateSelector *layer_states[SGCloudLayer::SG_MAX_CLOUD_COVERAGES];
 static bool state_initialized = false;
index 1966259aeee97ee155d9df5078232fbc4cf3c5f3..0785edb5a63c7193a8fe74ca15cd4ab5ae468041 100644 (file)
@@ -35,7 +35,7 @@
 # include <AL/alc.h>
 #endif
 
-#if defined (__APPLE__) 
+#if defined (__APPLE__)
 // any C++ header file undefines isinf and isnan
 // so this should be included before <iostream>
 inline int (isinf)(double r) { return isinf(r); }
@@ -46,6 +46,10 @@ inline int (isnan)(double r) { return isnan(r); }
 #define isnan(x) _isnan(x)
 #endif
 
+#if defined (__FreeBSD__)
+inline int isnan(double r) { return !(r < 0 || r > 0); }
+#endif
+
 #include STL_IOSTREAM
 
 #include <simgear/debug/logstream.hxx>