Memleak: free the list of search hooks on exit
authorWilfried Goesgens <dothebart@citadel.org>
Sun, 14 Nov 2010 22:15:16 +0000 (23:15 +0100)
committerWilfried Goesgens <dothebart@citadel.org>
Sun, 14 Nov 2010 22:15:16 +0000 (23:15 +0100)
citadel/serv_extensions.c
citadel/serv_extensions.h
citadel/sysdep.c

index a35fa1bcf3070bb5fc5ff35532bc744eb37193ce..e23772e9602c9f72086375e5e185b7ecec7b6de2 100644 (file)
@@ -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;
index 6cca652aac791d603ace405b3db81041343191f0..b2d556377828e0b1ea0b8631dc398e20386a6c46 100644 (file)
@@ -194,6 +194,8 @@ void CtdlDestroyProtoHooks(void);
 
 void CtdlDestroyServiceHook(void);
 
+void CtdlDestroySearchHooks(void);
+
 void CtdlDestroyFixedOutputHooks(void);
 int PerformFixedOutputHooks(char *, char *, int);
 
index 2e43b66bb0c472ddfae6558e3e7661cb7b911e80..8ead78e0a65b08e63b90653a874d459f19d20e51 100644 (file)
@@ -1051,6 +1051,7 @@ void sysdep_master_cleanup(void) {
        CtdlDestroySessionHooks();
        CtdlDestroyServiceHook();
        CtdlDestroyRoomHooks();
+       CtdlDestroySearchHooks();
        #ifdef HAVE_BACKTRACE
 ///    eCrash_Uninit();
        #endif