]> git.saurik.com Git - redis.git/blobdiff - redis.c
MSET fixed, was not able to replace keys already set for a stupid bug
[redis.git] / redis.c
diff --git a/redis.c b/redis.c
index 3077badb1562da0b7c3a166a5c60c2cb8db160a5..c8cb67f0c5c4c28c3eba14885d53200fd6ea76e0 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -4128,9 +4128,16 @@ static void msetGenericCommand(redisClient *c, int nx) {
     }
 
     for (j = 1; j < c->argc; j += 2) {
-        dictAdd(c->db->dict,c->argv[j],c->argv[j+1]);
-        incrRefCount(c->argv[j]);
-        incrRefCount(c->argv[j+1]);
+        int retval;
+
+        retval = dictAdd(c->db->dict,c->argv[j],c->argv[j+1]);
+        if (retval == DICT_ERR) {
+            dictReplace(c->db->dict,c->argv[j],c->argv[j+1]);
+            incrRefCount(c->argv[j+1]);
+        } else {
+            incrRefCount(c->argv[j]);
+            incrRefCount(c->argv[j+1]);
+        }
         removeExpire(c->db,c->argv[j]);
     }
     server.dirty += (c->argc-1)/2;