summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2011-03-04 16:44:00 +0100
committerantirez <antirez@gmail.com>2011-03-04 16:44:00 +0100
commitf6e0b196d32c72ebde5e9440d0359e58d316550a (patch)
tree393d63730925633c75ae8fecad4789f6d949e03f
parentaf5b54b9361b984224ac2308d141d547ef4df102 (diff)
downloadredis-f6e0b196d32c72ebde5e9440d0359e58d316550a.tar.gz
Restore argc/argv in EXEC after command is executed (backported from 2.2)
-rw-r--r--redis.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/redis.c b/redis.c
index 2790554de..aa1833704 100644
--- a/redis.c
+++ b/redis.c
@@ -7601,6 +7601,10 @@ static void execCommand(redisClient *c) {
c->argc = c->mstate.commands[j].argc;
c->argv = c->mstate.commands[j].argv;
call(c,c->mstate.commands[j].cmd);
+
+ /* Commands may alter argc/argv, restore mstate. */
+ c->mstate.commands[j].argc = c->argc;
+ c->mstate.commands[j].argv = c->argv;
}
c->argv = orig_argv;
c->argc = orig_argc;