X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/b3a96d454e9a4a7f8d88bb0e6f301427b5cfaa3e..b0d1d2684d15aeb201da6f8e1e23ba496d6907ad:/src/t_set.c diff --git a/src/t_set.c b/src/t_set.c index b221e2e9..c7d05c2f 100644 --- a/src/t_set.c +++ b/src/t_set.c @@ -249,8 +249,11 @@ void sremCommand(redisClient *c) { 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 (setTypeSize(set) == 0) { + dbDelete(c->db,c->argv[1]); + break; + } } } if (deleted) { @@ -437,6 +440,7 @@ void sinterGenericCommand(redisClient *c, robj **setkeys, unsigned long setnum, si = setTypeInitIterator(sets[0]); while((encoding = setTypeNext(si,&eleobj,&intobj)) != -1) { for (j = 1; j < setnum; j++) { + if (sets[j] == sets[0]) continue; if (encoding == REDIS_ENCODING_INTSET) { /* intset with intset is simple... and fast */ if (sets[j]->encoding == REDIS_ENCODING_INTSET &&