summaryrefslogtreecommitdiff
path: root/src/multi.c
diff options
context:
space:
mode:
authorPieter Noordhuis <pcnoordhuis@gmail.com>2011-02-23 09:39:29 +0100
committerantirez <antirez@gmail.com>2011-02-23 14:37:22 +0100
commit6c682e559cd250049ce483d60af19a42d0177d72 (patch)
tree2d56cb30b1a3ba98b02fe1a57cea2b3935ae084b /src/multi.c
parentbf45f266b382860f849d2cf7d53c564a77aea98c (diff)
downloadredis-6c682e559cd250049ce483d60af19a42d0177d72.tar.gz
Restore argc/argv in EXEC after command is executed
Diffstat (limited to 'src/multi.c')
-rw-r--r--src/multi.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/multi.c b/src/multi.c
index 59fc9d9e8..ba3a0cd6c 100644
--- a/src/multi.c
+++ b/src/multi.c
@@ -110,6 +110,10 @@ 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;