summaryrefslogtreecommitdiff
path: root/event.c
diff options
context:
space:
mode:
authorAzat Khuzhin <a3at.mail@gmail.com>2015-01-08 04:45:27 +0300
committerAzat Khuzhin <a3at.mail@gmail.com>2015-01-08 04:49:28 +0300
commit941faaed39760f0a16bd03db9fb173caaed7d877 (patch)
tree138506623d523ca3b9c5826a8d6a76e3a6085826 /event.c
parent597c7b259b025080f07a68aa9be486ce3584e2d1 (diff)
downloadlibevent-941faaed39760f0a16bd03db9fb173caaed7d877.tar.gz
event: call event_disable_debug_mode() in libevent_global_shutdown()
This will avoid leaking of event_debug_map_HT_GROW I buildin it into libevent_glboal_shutdown() because event_disable_debug_mode() -> event_free_debug_globals() -> event_free_debug_globals_locks() will clean event_debug_map_lock_ that used in event_disable_debug_mode().
Diffstat (limited to 'event.c')
-rw-r--r--event.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/event.c b/event.c
index 2e4f64ea..909abe95 100644
--- a/event.c
+++ b/event.c
@@ -526,22 +526,24 @@ event_enable_debug_mode(void)
#endif
}
-#if 0
void
event_disable_debug_mode(void)
{
+#ifndef EVENT__DISABLE_DEBUG_MODE
struct event_debug_entry **ent, *victim;
EVLOCK_LOCK(event_debug_map_lock_, 0);
for (ent = HT_START(event_debug_map, &global_debug_map); ent; ) {
victim = *ent;
- ent = HT_NEXT_RMV(event_debug_map,&global_debug_map, ent);
+ ent = HT_NEXT_RMV(event_debug_map, &global_debug_map, ent);
mm_free(victim);
}
HT_CLEAR(event_debug_map, &global_debug_map);
EVLOCK_UNLOCK(event_debug_map_lock_ , 0);
-}
+
+ event_debug_mode_on_ = 0;
#endif
+}
struct event_base *
event_base_new_with_config(const struct event_config *cfg)
@@ -3798,6 +3800,7 @@ event_free_globals(void)
void
libevent_global_shutdown(void)
{
+ event_disable_debug_mode();
event_free_globals();
}