]> git.saurik.com Git - redis.git/commitdiff
use the right object when cleaning up after zunion/zinter (fixes issue 216)
authorPieter Noordhuis <pcnoordhuis@gmail.com>
Thu, 1 Apr 2010 20:07:50 +0000 (22:07 +0200)
committerPieter Noordhuis <pcnoordhuis@gmail.com>
Thu, 1 Apr 2010 20:07:50 +0000 (22:07 +0200)
redis.c
test-redis.tcl

diff --git a/redis.c b/redis.c
index 3f75037daa22c8f665b9bef4cb6a71f84ff360b4..04d8b0be4d837ccec3043ee4185831d8081c77a6 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -5685,7 +5685,7 @@ static void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
         addReplyLong(c, dstzset->zsl->length);
         server.dirty++;
     } else {
-        decrRefCount(dstzset);
+        decrRefCount(dstobj);
         addReply(c, shared.czero);
     }
     zfree(src);
index 43672254431887bbbef0e9e4a9809247314281e2..f7fe39b0487c2b7eaea6366c01aab766bb2c4d4e 100644 (file)
@@ -1489,6 +1489,11 @@ proc main {server port} {
         list [$r zremrangebyrank zset 1 3] [$r zrange zset 0 -1]
     } {3 {a e}}
 
+    test {ZUNION against non-existing key doesn't set destination} {
+      $r del zseta
+      list [$r zunion dst_key 1 zseta] [$r exists dst_key]
+    } {0 0}
+
     test {ZUNION basics} {
         $r del zseta zsetb zsetc
         $r zadd zseta 1 a