[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r10902: free a small static string on exit. (tor/trunk/src/or)



Author: arma
Date: 2007-07-22 02:32:28 -0400 (Sun, 22 Jul 2007)
New Revision: 10902

Modified:
   tor/trunk/src/or/main.c
   tor/trunk/src/or/routerlist.c
Log:
free a small static string on exit.


Modified: tor/trunk/src/or/main.c
===================================================================
--- tor/trunk/src/or/main.c	2007-07-22 04:36:33 UTC (rev 10901)
+++ tor/trunk/src/or/main.c	2007-07-22 06:32:28 UTC (rev 10902)
@@ -1784,6 +1784,7 @@
   tor_free(timeout_event);
   /* Stuff in util.c */
   escaped(NULL);
+  esc_router_info(NULL);
   if (!postfork) {
     logs_free_all(); /* free log strings. do this last so logs keep working. */
   }

Modified: tor/trunk/src/or/routerlist.c
===================================================================
--- tor/trunk/src/or/routerlist.c	2007-07-22 04:36:33 UTC (rev 10901)
+++ tor/trunk/src/or/routerlist.c	2007-07-22 06:32:28 UTC (rev 10902)
@@ -5391,15 +5391,19 @@
  * THIS FUNCTION IS NOT REENTRANT.  Don't call it from outside the main
  * thread.  Also, each call invalidates the last-returned value, so don't
  * try log_warn(LD_GENERAL, "%s %s", esc_router_info(a), esc_router_info(b));
+ *
+ * If <b>router</b> is NULL, it just frees its internal memory and returns.
  */
 const char *
 esc_router_info(routerinfo_t *router)
 {
-  static char *info;
+  static char *info=NULL;
   char *esc_contact, *esc_platform;
   size_t len;
   if (info)
     tor_free(info);
+  if (!router)
+    return NULL; /* we're exiting; just free the memory we use */
 
   esc_contact = esc_for_log(router->contact_info);
   esc_platform = esc_for_log(router->platform);