diff --git a/src/object.c b/src/object.c index 6a03f26a74..45acd2e836 100644 --- a/src/object.c +++ b/src/object.c @@ -988,7 +988,7 @@ size_t objectComputeSize(robj *key, robj *o, size_t sample_size, int dbid) { dict *d; dictIterator *di; struct dictEntry *de; - size_t asize = 0, elesize = 0, samples = 0; + size_t asize = 0, elesize = 0, elecount = 0, samples = 0; if (o->type == OBJ_STRING) { if(o->encoding == OBJ_ENCODING_INT) { @@ -1007,9 +1007,10 @@ size_t objectComputeSize(robj *key, robj *o, size_t sample_size, int dbid) { asize = sizeof(*o)+sizeof(quicklist); do { elesize += sizeof(quicklistNode)+zmalloc_size(node->entry); + elecount += node->count; samples++; } while ((node = node->next) && samples < sample_size); - asize += (double)elesize/samples*ql->len; + asize += (double)elesize/elecount*ql->count; } else if (o->encoding == OBJ_ENCODING_LISTPACK) { asize = sizeof(*o)+zmalloc_size(o->ptr); } else {