From: Wilfried Goesgens Date: Sun, 14 Nov 2010 22:15:16 +0000 (+0100) Subject: Memleak: free the list of search hooks on exit X-Git-Tag: v8.01~584 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=a629da83391d58813cc962f6c52d991868b10e3a Memleak: free the list of search hooks on exit --- diff --git a/citadel/serv_extensions.c b/citadel/serv_extensions.c index a35fa1bcf..e23772e96 100644 --- a/citadel/serv_extensions.c +++ b/citadel/serv_extensions.c @@ -893,6 +893,19 @@ void CtdlUnregisterSearchFuncHook(void (*fcn_ptr)(int *, long **, const char *), } } +void CtdlDestroySearchHooks(void) +{ + struct SearchFunctionHook *cur, *p; + + cur = SearchFunctionHookTable; + SearchFunctionHookTable = NULL; + while (cur != NULL) { + p = cur->next; + free(cur); + cur = p; + } +} + void CtdlModuleDoSearch(int *num_msgs, long **search_msgs, const char *search_string, const char *func_name) { struct SearchFunctionHook *fcn = NULL; diff --git a/citadel/serv_extensions.h b/citadel/serv_extensions.h index 6cca652aa..b2d556377 100644 --- a/citadel/serv_extensions.h +++ b/citadel/serv_extensions.h @@ -194,6 +194,8 @@ void CtdlDestroyProtoHooks(void); void CtdlDestroyServiceHook(void); +void CtdlDestroySearchHooks(void); + void CtdlDestroyFixedOutputHooks(void); int PerformFixedOutputHooks(char *, char *, int); diff --git a/citadel/sysdep.c b/citadel/sysdep.c index 2e43b66bb..8ead78e0a 100644 --- a/citadel/sysdep.c +++ b/citadel/sysdep.c @@ -1051,6 +1051,7 @@ void sysdep_master_cleanup(void) { CtdlDestroySessionHooks(); CtdlDestroyServiceHook(); CtdlDestroyRoomHooks(); + CtdlDestroySearchHooks(); #ifdef HAVE_BACKTRACE /// eCrash_Uninit(); #endif