diff --git a/src/hooks.c b/src/hooks.c index f67e177..6c0f399 100644 --- a/src/hooks.c +++ b/src/hooks.c @@ -14,6 +14,7 @@ */ #include +#include #include #include @@ -26,12 +27,20 @@ struct mstdnt_hooks _mstdnt_hooks_def = { void mstdnt_set_hooks(struct mstdnt_hooks* hooks) { + assert(hooks != NULL); cJSON_Hooks cjson_hooks = { .malloc_fn = hooks->malloc, .free_fn = hooks->free, }; cJSON_InitHooks(&cjson_hooks); - _mstdnt_hooks_def = *hooks; + if (hooks->malloc) + _mstdnt_hooks_def.malloc = hooks->malloc; + if (hooks->free) + _mstdnt_hooks_def.free = hooks->free; + if (hooks->calloc) + _mstdnt_hooks_def.calloc = hooks->calloc; + if (hooks->realloc) + _mstdnt_hooks_def.realloc = hooks->realloc; }