From 8fc67080a2448298d13af3f7d6bbbee4bc9e64fb Mon Sep 17 00:00:00 2001 From: Dvir Volk Date: Thu, 28 Apr 2016 12:50:55 +0300 Subject: [PATCH] second attempt at vector formtting --- src/module.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/module.c b/src/module.c index 4a74d158..f153555a 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 {