summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorunknown <msvensson@pilot.blaudden>2007-05-16 10:10:02 +0200
committerunknown <msvensson@pilot.blaudden>2007-05-16 10:10:02 +0200
commit9e1585ab8f487222a03e017079efadb570817657 (patch)
tree222a34ab17c278e1e03ef3231ddf4cf2cdecf09b /include
parente9e6b9e477fbb5920ba929e0851eb0d4e50ec7aa (diff)
downloadmariadb-git-9e1585ab8f487222a03e017079efadb570817657.tar.gz
Fix for bug #28240: "isinf()" cannot be used in C++ for lack of prototype
- Since isinf() portability across various platforms and compilers is a complicated question, we should not use it directly. Instead, the my_isinf() macro should be used, which is defined as an alias to the system-defined isinf() if it is safe to use, or a workaround implementation otherwise configure.in: Added a check to define HAVE_ISINF only if it can be used in C++ code as well. include/my_global.h: Define my_isinf() as an alias to isinf(), if it is available in both C and C++ code. Otherwise, define it to a workaround implementation. sql/item_func.cc: Replaced isinf() with my_isinf(). strings/strtod.c: Replaced isinf() with my_isinf().
Diffstat (limited to 'include')
-rw-r--r--include/my_global.h11
1 files changed, 5 insertions, 6 deletions
diff --git a/include/my_global.h b/include/my_global.h
index e9b371d8d30..f32a987ffb1 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -792,12 +792,11 @@ typedef SOCKET_SIZE_TYPE size_socket;
#define isnan(x) ((x) != (x))
#endif
-#if !defined(HAVE_ISINF)
-/* The configure check for "isinf with math.h" has failed */
-#ifdef isinf
-#undef isinf
-#endif
-#define isinf(X) (!finite(X) && !isnan(X))
+#ifdef HAVE_ISINF
+/* isinf() can be used in both C and C++ code */
+#define my_isinf(X) isinf(X)
+#else
+#define my_isinf(X) (!finite(X) && !isnan(X))
#endif
/* Define missing math constants. */