From 56c01c959ab6e86b5fbb2f882a30324619987947 Mon Sep 17 00:00:00 2001 From: Guy Benoish Date: Wed, 11 Jan 2017 19:24:19 +0200 Subject: enlarged buffer given to ld2string --- src/object.c | 2 +- src/t_hash.c | 2 +- src/util.h | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/object.c b/src/object.c index 1ae37c9d1..3e197c579 100644 --- a/src/object.c +++ b/src/object.c @@ -145,7 +145,7 @@ robj *createStringObjectFromLongLong(long long value) { * * The 'humanfriendly' option is used for INCRBYFLOAT and HINCRBYFLOAT. */ robj *createStringObjectFromLongDouble(long double value, int humanfriendly) { - char buf[256]; + char buf[MAX_LONG_DOUBLE_CHARS]; int len = ld2string(buf,sizeof(buf),value,humanfriendly); return createStringObject(buf,len); } diff --git a/src/t_hash.c b/src/t_hash.c index a49559336..f9ff8e4ee 100644 --- a/src/t_hash.c +++ b/src/t_hash.c @@ -620,7 +620,7 @@ void hincrbyfloatCommand(client *c) { value += incr; - char buf[256]; + char buf[MAX_LONG_DOUBLE_CHARS]; int len = ld2string(buf,sizeof(buf),value,1); new = sdsnewlen(buf,len); hashTypeSet(o,c->argv[2]->ptr,new,HASH_SET_TAKE_VALUE); diff --git a/src/util.h b/src/util.h index d7784495b..91acde047 100644 --- a/src/util.h +++ b/src/util.h @@ -33,6 +33,11 @@ #include #include "sds.h" +/* The maximum number of characters needed to represent a long double + * as a string (long double has a huge range). + * This should be the size of the buffer given to ld2string */ +#define MAX_LONG_DOUBLE_CHARS 5*1024 + int stringmatchlen(const char *p, int plen, const char *s, int slen, int nocase); int stringmatch(const char *p, const char *s, int nocase); long long memtoll(const char *p, int *err); -- cgit v1.2.1