From 88e8d89f1e2a3b032f1b5446b3328f4f256f858a Mon Sep 17 00:00:00 2001
From: antirez <antirez@gmail.com>
Date: Thu, 13 May 2010 10:47:06 +0200
Subject: [PATCH] explicitly checks with ifdefs if our floating point and long
 long assumptions are verified

---
 redis.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/redis.c b/redis.c
index 7964cdfb6..f63aad96b 100644
--- a/redis.c
+++ b/redis.c
@@ -3513,6 +3513,7 @@ static int rdbSaveDoubleValue(FILE *fp, double val) {
         len = 1;
         buf[0] = (val < 0) ? 255 : 254;
     } else {
+#if (DBL_MANT_DIG >= 52) && (LLONG_MAX == 0x7fffffffffffffffLL)
         /* Check if the float is in a safe range to be casted into a
          * long long. We are assuming that long long is 64 bit here.
          * Also we are assuming that there are no implementations around where
@@ -3527,6 +3528,7 @@ static int rdbSaveDoubleValue(FILE *fp, double val) {
         if (val > min && val < max && val == ((double)((long long)val)))
             ll2string((char*)buf+1,sizeof(buf),(long long)val);
         else
+#endif
             snprintf((char*)buf+1,sizeof(buf)-1,"%.17g",val);
         buf[0] = strlen((char*)buf+1);
         len = buf[0]+1;