]> git.saurik.com Git - redis.git/commitdiff
Fixed memory leak in hash loading.
authorantirez <antirez@gmail.com>
Fri, 23 Mar 2012 19:21:19 +0000 (20:21 +0100)
committerantirez <antirez@gmail.com>
Fri, 23 Mar 2012 19:21:19 +0000 (20:21 +0100)
src/rdb.c

index 519b645d157281e86b6e2213ddfdfb648e36069a..1e23fa70cf392b399806ce9a7086af65114dd7c2 100644 (file)
--- a/src/rdb.c
+++ b/src/rdb.c
@@ -859,14 +859,17 @@ robj *rdbLoadObject(int rdbtype, rio *rdb) {
             /* Add pair to ziplist */
             o->ptr = ziplistPush(o->ptr, field->ptr, sdslen(field->ptr), ZIPLIST_TAIL);
             o->ptr = ziplistPush(o->ptr, value->ptr, sdslen(value->ptr), ZIPLIST_TAIL);
-
             /* Convert to hash table if size threshold is exceeded */
             if (sdslen(field->ptr) > server.hash_max_ziplist_value ||
                 sdslen(value->ptr) > server.hash_max_ziplist_value)
             {
+                decrRefCount(field);
+                decrRefCount(value);
                 hashTypeConvert(o, REDIS_ENCODING_HT);
                 break;
             }
+            decrRefCount(field);
+            decrRefCount(value);
         }
 
         /* Load remaining fields and values into the hash table */