浏览代码

Fix a memory leak in smartlist_string_remove.

svn:r5002
Nick Mathewson 20 年之前
父节点
当前提交
8d70ae01b8
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      src/common/container.c

+ 2 - 1
src/common/container.c

@@ -121,7 +121,7 @@ void smartlist_remove(smartlist_t *sl, void *element) {
     }
 }
 
-/** If there are any strings in sl equal to element, remove them.
+/** If there are any strings in sl equal to element, remove and free them.
  * Does not preserve order. */
 void
 smartlist_string_remove(smartlist_t *sl, const char *element)
@@ -131,6 +131,7 @@ smartlist_string_remove(smartlist_t *sl, const char *element)
   tor_assert(element);
   for (i = 0; i < sl->num_used; ++i) {
     if (!strcmp(element, sl->list[i])) {
+      tor_free(sl->list[i]);
       sl->list[i] = sl->list[--sl->num_used]; /* swap with the end */
       i--; /* so we process the new i'th element */
     }