summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2005-09-12 05:20:29 +0000
committerNick Mathewson <nickm@torproject.org>2005-09-12 05:20:29 +0000
commit8d70ae01b8bd9d2203230d753b651f91c3afc123 (patch)
treef885bac609135961ceb79d939be4e10f1b34931b
parent63dfe2447ee4f283988c81c9025303503201d690 (diff)
downloadtor-8d70ae01b8bd9d2203230d753b651f91c3afc123.tar.gz
tor-8d70ae01b8bd9d2203230d753b651f91c3afc123.zip
Fix a memory leak in smartlist_string_remove.
svn:r5002
-rw-r--r--src/common/container.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/common/container.c b/src/common/container.c
index 74b2dd9072..766e6deb9c 100644
--- a/src/common/container.c
+++ b/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 */
}