summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDvir Volk <dvirsky@gmail.com>2016-04-28 12:50:55 +0300
committerantirez <antirez@gmail.com>2016-05-10 06:40:10 +0200
commit8fc67080a2448298d13af3f7d6bbbee4bc9e64fb (patch)
tree9ec8964fe946079288d7a4bf3a14c63b4eaf71c7
parent7f5e1340f9bf6e1566be630f424accdb2ad0aed7 (diff)
downloadredis-8fc67080a2448298d13af3f7d6bbbee4bc9e64fb.tar.gz
second attempt at vector formtting
-rw-r--r--src/module.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/module.c b/src/module.c
index 4a74d1586..f153555ae 100644
--- a/src/module.c
+++ b/src/module.c
@@ -2044,7 +2044,18 @@ robj **moduleCreateArgvFromUserFormat(const char *cmdname, const char *fmt, int
long ll = va_arg(ap,long long);
argv[argc++] = createStringObjectFromLongLong(ll);
} else if (*p == 'v') {
- /* TODO: work in progress. */
+ /* a vector of strings */
+ robj **v = va_arg(ap, void*);
+ size_t vlen = va_arg(ap, size_t);
+
+ /* We need to grow argv by N-1 elements */
+ argv_size += vlen-1;
+ argv = zrealloc(argv,sizeof(robj*)*argv_size);
+ size_t i = 0;
+ for (i = 0; i < vlen; i++) {
+ incrRefCount(v[i]);
+ argv[argc++] = v[i];
+ }
} else if (*p == '!') {
if (flags) (*flags) |= REDISMODULE_ARGV_REPLICATE;
} else {