From 3b200035037652e439ed22e884c2f8c10b097a52 Mon Sep 17 00:00:00 2001 From: antirez Date: Mon, 14 Apr 2014 09:36:27 +0200 Subject: [PATCH] hllSparseAdd(): more correct dense conversion conditional. We want to promote if the total string size exceeds the resulting size after the upgrade. --- src/hyperloglog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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);