summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-04-18 13:01:04 +0200
committerantirez <antirez@gmail.com>2014-04-18 16:14:34 +0200
commit5b5dd73093318386b5458a7429b9412ff1e8c593 (patch)
treed1d9d05cd2c24711a122324685a99d98a84856f4
parentca6c793844230d035c51f77d459bced0072190a8 (diff)
downloadredis-5b5dd73093318386b5458a7429b9412ff1e8c593.tar.gz
ZREMRANGEBYLEX memory leak removed calling zslFreeLexRange().
-rw-r--r--src/t_zset.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/t_zset.c b/src/t_zset.c
index 40dc00c27..4e946b4f5 100644
--- a/src/t_zset.c
+++ b/src/t_zset.c
@@ -1406,7 +1406,7 @@ void zremrangeGenericCommand(redisClient *c, int rangetype) {
/* Step 2: Lookup & range sanity checks if needed. */
if ((zobj = lookupKeyWriteOrReply(c,key,shared.czero)) == NULL ||
- checkType(c,zobj,REDIS_ZSET)) return;
+ checkType(c,zobj,REDIS_ZSET)) goto cleanup;
if (rangetype == ZRANGE_RANK) {
/* Sanitize indexes. */
@@ -1419,7 +1419,7 @@ void zremrangeGenericCommand(redisClient *c, int rangetype) {
* The range is empty when start > end or start >= length. */
if (start > end || start >= llen) {
addReply(c,shared.czero);
- return;
+ goto cleanup;
}
if (end >= llen) end = llen-1;
}
@@ -1473,6 +1473,9 @@ void zremrangeGenericCommand(redisClient *c, int rangetype) {
}
server.dirty += deleted;
addReplyLongLong(c,deleted);
+
+cleanup:
+ if (rangetype == ZRANGE_LEX) zslFreeLexRange(&lexrange);
}
void zremrangebyrankCommand(redisClient *c) {