]> git.saurik.com Git - redis.git/commitdiff
Fixed segfault in freeMemoryIfNeeded due to the fact that keys are now sds strings...
authorantirez <antirez@gmail.com>
Fri, 27 Aug 2010 09:01:03 +0000 (11:01 +0200)
committerantirez <antirez@gmail.com>
Fri, 27 Aug 2010 09:01:03 +0000 (11:01 +0200)
src/redis.c

index 9fbd52f2e19ca1b557fc74912449df67a1ffcf7a..77e67c5839cfdcea732ef5a42037b75f04f3511a 100644 (file)
@@ -1321,7 +1321,8 @@ void freeMemoryIfNeeded(void) {
         if (tryFreeOneObjectFromFreelist() == REDIS_OK) continue;
         for (j = 0; j < server.dbnum; j++) {
             int minttl = -1;
-            robj *minkey = NULL;
+            sds minkey = NULL;
+            robj *keyobj = NULL;
             struct dictEntry *de;
 
             if (dictSize(server.db[j].expires)) {
@@ -1338,7 +1339,9 @@ void freeMemoryIfNeeded(void) {
                         minttl = t;
                     }
                 }
-                dbDelete(server.db+j,minkey);
+                keyobj = createStringObject(minkey,sdslen(minkey));
+                dbDelete(server.db+j,keyobj);
+                decrRefCount(keyobj);
             }
         }
         if (!freed) return; /* nothing to free... */