From c7e83eeba9ff8bfc477dcb26f77a5dfecb6cdce9 Mon Sep 17 00:00:00 2001 From: jjgarcia Date: Wed, 26 Oct 2005 07:49:08 +0000 Subject: [PATCH] While looking for the optimal length to print a floating point number, write_double() may cause some underflow exceptions, which are harmless and should be masks. --- src/c/print.d | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/c/print.d b/src/c/print.d index 6548310e3..0e0e13f6d 100644 --- a/src/c/print.d +++ b/src/c/print.d @@ -22,6 +22,9 @@ #ifndef _MSC_VER #include #endif +#ifdef HAVE_FENV_H +#include +#endif #include "ecl.h" #include "internal.h" #include "bytecodes.h" @@ -544,6 +547,10 @@ static void write_double(double d, int e, bool shortp, cl_object stream) { int exp; +#if defined(HAVE_FENV_H) || defined(_MSC_VER) || defined(mingw32) + fenv_t env; + feholdexcept(&env); +#endif if (d < 0) { write_ch('-', stream); d = -d; @@ -600,6 +607,9 @@ write_double(double d, int e, bool shortp, cl_object stream) } write_decimal(exp, stream); } +#if defined(HAVE_FENV_H) || defined(_MSC_VER) || defined(mingw32) + fesetenv(&env); +#endif }