From: Pieter Noordhuis Date: Sun, 13 Jun 2010 13:07:53 +0000 (+0200) Subject: use raw strings when loading a hash from the rdb into a zipmap X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/a8dca69bb31ae1ab4503e31e71e46b8d85b36dd5 use raw strings when loading a hash from the rdb into a zipmap --- diff --git a/redis.c b/redis.c index 9253ed35..295bec04 100644 --- a/redis.c +++ b/redis.c @@ -4258,10 +4258,16 @@ static robj *rdbLoadObject(int type, FILE *fp) { if (o->encoding == REDIS_ENCODING_ZIPMAP) { unsigned char *zm = o->ptr; + robj *deckey, *decval; - zm = zipmapSet(zm,key->ptr,sdslen(key->ptr), - val->ptr,sdslen(val->ptr),NULL); + /* We need raw string objects to add them to the zipmap */ + deckey = getDecodedObject(key); + decval = getDecodedObject(val); + zm = zipmapSet(zm,deckey->ptr,sdslen(deckey->ptr), + decval->ptr,sdslen(decval->ptr),NULL); o->ptr = zm; + decrRefCount(deckey); + decrRefCount(decval); decrRefCount(key); decrRefCount(val); } else {