summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-04-14 09:36:27 +0200
committerantirez <antirez@gmail.com>2014-04-14 09:36:32 +0200
commit3b200035037652e439ed22e884c2f8c10b097a52 (patch)
tree75bd15d669a7a9a8bc123764a14116635fdb04b3
parentb7571b7453e1597ef7ed5041a06a3fd97c99c0d0 (diff)
downloadredis-3b200035037652e439ed22e884c2f8c10b097a52.tar.gz
hllSparseAdd(): more correct dense conversion conditional.
We want to promote if the total string size exceeds the resulting size after the upgrade.
-rw-r--r--src/hyperloglog.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/hyperloglog.c b/src/hyperloglog.c
index 38495a0b3..df79fc970 100644
--- a/src/hyperloglog.c
+++ b/src/hyperloglog.c
@@ -801,7 +801,7 @@ int hllSparseAdd(robj *o, unsigned char *ele, size_t elesize) {
int oldlen = is_xzero ? 2 : 1;
int deltalen = seqlen-oldlen;
- if (deltalen > 0 && sdslen(o->ptr) > HLL_SPARSE_MAX) goto promote;
+ if (deltalen > 0 && sdslen(o->ptr)+deltalen > HLL_SPARSE_MAX) goto promote;
if (deltalen && next) memmove(next+deltalen,next,next-sparse);
sdsIncrLen(o->ptr,deltalen);
memcpy(p,seq,seqlen);