diff --git a/Common/s2j/s2j.h b/Common/s2j/s2j.h index b09a9f759..f6ba49b77 100644 --- a/Common/s2j/s2j.h +++ b/Common/s2j/s2j.h @@ -81,8 +81,26 @@ extern "C" { S2J_STRUCT_GET_STRUCT_ELEMENT(child_struct, to_struct, child_json, from_json, type, element) /* s2j.c */ -extern S2jHook s2jHook; -void s2j_init(S2jHook *hook); +//extern S2jHook s2jHook; + +S2jHook s2jHook = { + .malloc_fn = malloc, + .free_fn = free, +}; + +static void s2j_init(S2jHook *hook) +{ + /* initialize cJSON library */ + cJSON_InitHooks((cJSON_Hooks *)hook); + /* initialize hooks */ + if (hook) { + s2jHook.malloc_fn = (hook->malloc_fn) ? hook->malloc_fn : malloc; + s2jHook.free_fn = (hook->free_fn) ? hook->free_fn : free; + } else { + s2jHook.malloc_fn = malloc; + s2jHook.free_fn = free; + } +} #ifdef __cplusplus }