From 24f61169a66920971981963c964e71e17c49ee13 Mon Sep 17 00:00:00 2001 From: Slavomir Kaslev Date: Fri, 16 Jan 2026 13:45:51 +0200 Subject: [PATCH] Avoid zmalloc_size() in kvobjAllocSize() and approximate instead --- src/object.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/object.c b/src/object.c index 1241dff8b..aa667d17b 100644 --- a/src/object.c +++ b/src/object.c @@ -1236,8 +1236,16 @@ size_t kvobjComputeSize(robj *key, kvobj *o, size_t sample_size, int dbid) { } size_t kvobjAllocSize(kvobj *o) { - /* All kv-objects has at least kvobj header and embedded key */ - size_t asize = zmalloc_size(kvobjGetAllocPtr(o)); + debugServerAssert(o->iskvobj); + size_t asize = sizeof(kvobj); + /* Add metadata size */ + asize += getNumMeta(o->metabits) * sizeof(uint64_t); + /* Add embedded key size */ + asize += 1; /* embedded key header size */ + asize += sdsAllocSize(kvobjGetKey(o)); + /* Add embedded string size */ + if (o->encoding == OBJ_ENCODING_EMBSTR) + asize += sdsAllocSize(o->ptr); if (o->type == OBJ_STRING) { asize += stringObjectAllocSize(o);