diff options
author | antirez <antirez@gmail.com> | 2015-11-16 10:29:35 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2015-11-17 15:43:23 +0100 |
commit | e57cccdefbbac1bef7b397d65df6a353bd9cfeee (patch) | |
tree | c9146a12107510432afce5404893bee734f61a53 /deps/hiredis | |
parent | 34aadf79c333527da4a188bc3470ce6cacd7a13b (diff) | |
download | redis-e57cccdefbbac1bef7b397d65df6a353bd9cfeee.tar.gz |
Lua debugger: use sds_malloc() to allocate eval cli array.
Redis-cli handles the debugger "eval" command in a special way since
sdssplitargs() would not be ok: we need to send the Redis debugger the
whole Lua script without any parsing. However in order to later free the
argument vector inside redis-cli using just sdsfreesplitres(), we need
to allocate the array of SDS pointers using the same allocator SDS is
using, that may differ to what Redis is using.
So now a newer version of SDS exports sds_malloc() and other allocator
functions to give access, to the program it is linked to, the allocator
used internally by SDS.
Diffstat (limited to 'deps/hiredis')
-rw-r--r-- | deps/hiredis/sds.c | 9 | ||||
-rw-r--r-- | deps/hiredis/sds.h | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/deps/hiredis/sds.c b/deps/hiredis/sds.c index f1e4f949d..e3dd67352 100644 --- a/deps/hiredis/sds.c +++ b/deps/hiredis/sds.c @@ -1088,6 +1088,15 @@ sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen) { return join; } +/* Wrappers to the allocators used by SDS. Note that SDS will actually + * just use the macros defined into sdsalloc.h in order to avoid to pay + * the overhead of function calls. Here we define these wrappers only for + * the programs SDS is linked to, if they want to touch the SDS internals + * even if they use a different allocator. */ +void *sds_malloc(size_t size) { return s_malloc(size); } +void *sds_realloc(void *ptr, size_t size) { return s_realloc(ptr,size); } +void sds_free(void *ptr) { s_free(ptr); } + #if defined(SDS_TEST_MAIN) #include <stdio.h> #include "testhelp.h" diff --git a/deps/hiredis/sds.h b/deps/hiredis/sds.h index d7eb4c7d0..394f8b52e 100644 --- a/deps/hiredis/sds.h +++ b/deps/hiredis/sds.h @@ -258,6 +258,14 @@ sds sdsRemoveFreeSpace(sds s); size_t sdsAllocSize(sds s); void *sdsAllocPtr(sds s); +/* Export the allocator used by SDS to the program using SDS. + * Sometimes the program SDS is linked to, may use a different set of + * allocators, but may want to allocate or free things that SDS will + * respectively free or allocate. */ +void *sds_malloc(size_t size); +void *sds_realloc(void *ptr, size_t size); +void sds_free(void *ptr); + #ifdef REDIS_TEST int sdsTest(int argc, char *argv[]); #endif |