From: Nick Mathewson Date: Thu, 7 Apr 2011 19:25:33 +0000 (-0400) Subject: Free pending_cb_messages on exit X-Git-Tag: tor-0.2.2.25-alpha~17^2~1^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1be12213857e3c5068107f4df047cea03b6462e8;p=thirdparty%2Ftor.git Free pending_cb_messages on exit --- diff --git a/src/common/log.c b/src/common/log.c index 28d002967b..d14563c885 100644 --- a/src/common/log.c +++ b/src/common/log.c @@ -363,7 +363,7 @@ logv(int severity, log_domain_mask_t domain, const char *funcname, continue; } else if (lf->callback) { if (domain & LD_NOCB) { - if (!callbacks_deferred) { + if (!callbacks_deferred && pending_cb_messages) { pending_cb_message_t *msg = tor_malloc(sizeof(pending_cb_message_t)); msg->severity = severity; msg->domain = domain; @@ -512,9 +512,12 @@ void logs_free_all(void) { logfile_t *victim, *next; + smartlist_t *messages; LOCK_LOGS(); next = logfiles; logfiles = NULL; + messages = pending_cb_messages; + pending_cb_messages = NULL; UNLOCK_LOGS(); while (next) { victim = next; @@ -524,6 +527,12 @@ logs_free_all(void) } tor_free(appname); + SMARTLIST_FOREACH(messages, pending_cb_message_t *, msg, { + tor_free(msg->msg); + tor_free(msg); + }); + smartlist_free(messages); + /* We _could_ destroy the log mutex here, but that would screw up any logs * that happened between here and the end of execution. */ }