From 8abc5911dc06c01ed7777ded7db15eed1e2c3a82 Mon Sep 17 00:00:00 2001 From: SungBin Hong Date: Fri, 27 Sep 2013 21:33:58 +0900 Subject: [PATCH] Fix keytable size calculation We only need to allocate memory for key positions, not for every argument position. The most keys we can have is total arguments / keystep. Closes #1300 --- src/db.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/db.c b/src/db.c index 1c26c3bfe9073..27ce21d759c97 100644 --- a/src/db.c +++ b/src/db.c @@ -992,7 +992,7 @@ int *getKeysUsingCommandTable(struct redisCommand *cmd,robj **argv, int argc, in } last = cmd->lastkey; if (last < 0) last = argc+last; - keys = zmalloc(sizeof(int)*((last - cmd->firstkey)+1)); + keys = zmalloc(sizeof(int)*((last - cmd->firstkey)+1) / cmd->keystep); for (j = cmd->firstkey; j <= last; j += cmd->keystep) { redisAssert(j < argc); keys[i++] = j;