diff options
author | Dvir Volk <dvirsky@gmail.com> | 2016-04-28 12:50:55 +0300 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2016-05-10 06:40:10 +0200 |
commit | 8fc67080a2448298d13af3f7d6bbbee4bc9e64fb (patch) | |
tree | 9ec8964fe946079288d7a4bf3a14c63b4eaf71c7 | |
parent | 7f5e1340f9bf6e1566be630f424accdb2ad0aed7 (diff) | |
download | redis-8fc67080a2448298d13af3f7d6bbbee4bc9e64fb.tar.gz |
second attempt at vector formtting
-rw-r--r-- | src/module.c | 13 |
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 { |