From e553e0f382394ea055d0b6b7637ab2534cf38146 Mon Sep 17 00:00:00 2001 From: Michael Grunder Date: Tue, 26 May 2020 10:06:28 -0700 Subject: Document allocator injection and completeness fix in test.c (#824) --- README.md | 30 ++++++++++++++++++++++++++++++ test.c | 3 ++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e7b228..cb40ba9 100644 --- a/README.md +++ b/README.md @@ -474,6 +474,36 @@ Instead, use `redisInitiateSSL()` which also provides greater control over the configuration of the SSL connection, as the caller is responsible to create a connection context using `SSL_new()` and configure it as required. +## Allocator injection + +Hiredis uses a pass-thru structure of function pointers defined in +[alloc.h](https://github.com/redis/hiredis/blob/f5d25850/alloc.h#L41) that conttain +the currently configured allocation and deallocation functions. By default they +just point to libc (`malloc`, `calloc`, `realloc`, etc). + +### Overriding + +One can override the allocators like so: + +```c +hiredisAllocFuncs myfuncs = { + .mallocFn = my_malloc, + .callocFn = my_calloc, + .reallocFn = my_realloc, + .strdupFn = my_strdup, + .freeFn = my_free, +}; + +// Override allocators (function returns current allocators if needed) +hiredisAllocFuncs orig = hiredisSetAllocators(&myfuncs); +``` + +To reset the allocators to their default libc function simply call: + +```c +hiredisResetAllocators(); +``` + ## AUTHORS Hiredis was written by Salvatore Sanfilippo (antirez at gmail) and diff --git a/test.c b/test.c index 56ba9d6..8cc30f3 100644 --- a/test.c +++ b/test.c @@ -550,7 +550,8 @@ static void test_allocator_injection(void) { .mallocFn = hi_malloc_fail, .callocFn = hi_calloc_fail, .reallocFn = hi_realloc_fail, - .freeFn = NULL, + .strdupFn = strdup, + .freeFn = free, }; // Override hiredis allocators -- cgit v1.2.3