summaryrefslogtreecommitdiff
path: root/configure.in
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 /configure.in
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 'configure.in')
-rw-r--r--configure.in18
1 files changed, 13 insertions, 5 deletions
diff --git a/configure.in b/configure.in
index 1026c855bf2..e788419eb4f 100644
--- a/configure.in
+++ b/configure.in
@@ -2006,12 +2006,20 @@ case "$target" in
;;
esac
-# isinf() could be a function or a macro (HPUX)
-AC_MSG_CHECKING(for isinf with <math.h>)
+# Check that isinf() is available in math.h and can be used in both C and C++
+# code
+AC_MSG_CHECKING(for isinf in <math.h>)
AC_TRY_LINK([#include <math.h>], [float f = 0.0; int r = isinf(f); return r],
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_ISINF, [1], [isinf() macro or function]),
- AC_MSG_RESULT(no))
+ AC_MSG_RESULT(yes)
+ AC_MSG_CHECKING(whether isinf() can be used in C++ code)
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_LINK([#include <math.h>], [float f = 0.0; int r = isinf(f); return r],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_ISINF, [1], [isinf() macro or function]),
+ AC_MSG_RESULT(no))
+ AC_LANG_RESTORE,
+ AC_MSG_RESULT(no))
CFLAGS="$ORG_CFLAGS"