From: antirez Date: Sat, 17 Oct 2009 20:02:59 +0000 (+0200) Subject: MSET fixed, was not able to replace keys already set for a stupid bug X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/2ed22c8b29039dce0ae795c4ba3c334b9ec860f4 MSET fixed, was not able to replace keys already set for a stupid bug --- diff --git a/redis.c b/redis.c index 3077badb..c8cb67f0 100644 --- 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;