hllSparseAdd(): more correct dense conversion conditional.
We want to promote if the total string size exceeds the resulting size after the upgrade.
This commit is contained in:
parent
b7571b7453
commit
3b20003503
@ -801,7 +801,7 @@ int hllSparseAdd(robj *o, unsigned char *ele, size_t elesize) {
|
|||||||
int oldlen = is_xzero ? 2 : 1;
|
int oldlen = is_xzero ? 2 : 1;
|
||||||
int deltalen = seqlen-oldlen;
|
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);
|
if (deltalen && next) memmove(next+deltalen,next,next-sparse);
|
||||||
sdsIncrLen(o->ptr,deltalen);
|
sdsIncrLen(o->ptr,deltalen);
|
||||||
memcpy(p,seq,seqlen);
|
memcpy(p,seq,seqlen);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user