X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/22f294d24a1d56a655bdca69184e048e3ef49934..7e79dd3f4cf7a4236319f9ee1a408155eda4b881:/src/t_set.c diff --git a/src/t_set.c b/src/t_set.c index 138a2f8d..b221e2e9 100644 --- a/src/t_set.c +++ b/src/t_set.c @@ -242,19 +242,22 @@ void saddCommand(redisClient *c) { void sremCommand(redisClient *c) { robj *set; + int j, deleted = 0; if ((set = lookupKeyWriteOrReply(c,c->argv[1],shared.czero)) == NULL || checkType(c,set,REDIS_SET)) return; - c->argv[2] = tryObjectEncoding(c->argv[2]); - if (setTypeRemove(set,c->argv[2])) { - if (setTypeSize(set) == 0) dbDelete(c->db,c->argv[1]); + for (j = 2; j < c->argc; j++) { + if (setTypeRemove(set,c->argv[j])) { + if (setTypeSize(set) == 0) dbDelete(c->db,c->argv[1]); + deleted++; + } + } + if (deleted) { signalModifiedKey(c->db,c->argv[1]); - server.dirty++; - addReply(c,shared.cone); - } else { - addReply(c,shared.czero); + server.dirty += deleted; } + addReplyLongLong(c,deleted); } void smoveCommand(redisClient *c) {