]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Free pending_cb_messages on exit
authorNick Mathewson <nickm@torproject.org>
Thu, 7 Apr 2011 19:25:33 +0000 (15:25 -0400)
committerNick Mathewson <nickm@torproject.org>
Thu, 7 Apr 2011 19:25:33 +0000 (15:25 -0400)
src/common/log.c

index 28d002967bbb93610761c705de73dd98def8ed5a..d14563c885c044c2d347209a93b7856d642a30ae 100644 (file)
@@ -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. */
 }