]> git.saurik.com Git - redis.git/blobdiff - src/object.c
Fixed bug in AOF rewrite not working because of integer overflow
[redis.git] / src / object.c
index 22f538371a72bca93c4bd1095febf12a98766c66..20e7f57a3f0a9ce77a0e8e4d7ebb76d804fa9e73 100644 (file)
@@ -180,7 +180,7 @@ void decrRefCount(void *obj) {
     robj *o = obj;
 
     if (o->refcount <= 0) redisPanic("decrRefCount against refcount <= 0");
-    if (--(o->refcount) == 0) {
+    if (o->refcount == 1) {
         switch(o->type) {
         case REDIS_STRING: freeStringObject(o); break;
         case REDIS_LIST: freeListObject(o); break;
@@ -189,8 +189,9 @@ void decrRefCount(void *obj) {
         case REDIS_HASH: freeHashObject(o); break;
         default: redisPanic("Unknown object type"); break;
         }
-        o->ptr = NULL; /* defensive programming. We'll see NULL in traces. */
         zfree(o);
+    } else {
+        o->refcount--;
     }
 }