diff options
author | antirez <antirez@gmail.com> | 2014-04-14 09:36:27 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2014-04-14 09:36:32 +0200 |
commit | 3b200035037652e439ed22e884c2f8c10b097a52 (patch) | |
tree | 75bd15d669a7a9a8bc123764a14116635fdb04b3 | |
parent | b7571b7453e1597ef7ed5041a06a3fd97c99c0d0 (diff) | |
download | redis-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.c | 2 |
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); |