MSET fixed, was not able to replace keys already set for a stupid bug

This commit is contained in:
antirez 2009-10-17 22:02:59 +02:00
parent 8d0490e7ec
commit 2ed22c8b29

13
redis.c
View File

@ -4128,9 +4128,16 @@ static void msetGenericCommand(redisClient *c, int nx) {
} }
for (j = 1; j < c->argc; j += 2) { for (j = 1; j < c->argc; j += 2) {
dictAdd(c->db->dict,c->argv[j],c->argv[j+1]); int retval;
incrRefCount(c->argv[j]);
incrRefCount(c->argv[j+1]); 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]); removeExpire(c->db,c->argv[j]);
} }
server.dirty += (c->argc-1)/2; server.dirty += (c->argc-1)/2;