[or-cvs] r17580: {tor} Fix memory leaks in test_util_smartlist_* functions. (tor/trunk/src/or)
nickm at seul.org
nickm at seul.org
Thu Dec 11 06:18:09 UTC 2008
Author: nickm
Date: 2008-12-11 01:18:09 -0500 (Thu, 11 Dec 2008)
New Revision: 17580
Modified:
tor/trunk/src/or/test.c
Log:
Fix memory leaks in test_util_smartlist_* functions.
Modified: tor/trunk/src/or/test.c
===================================================================
--- tor/trunk/src/or/test.c 2008-12-11 06:18:01 UTC (rev 17579)
+++ tor/trunk/src/or/test.c 2008-12-11 06:18:09 UTC (rev 17580)
@@ -1697,7 +1697,7 @@
test_util_smartlist_strings(void)
{
smartlist_t *sl = smartlist_create();
- char *cp;
+ char *cp=NULL, *cp_alloc=NULL;
size_t sz;
/* Test split and join */
@@ -1710,21 +1710,21 @@
test_streq("a", smartlist_get(sl, 1));
test_streq("bc", smartlist_get(sl, 2));
test_streq("", smartlist_get(sl, 3));
- cp = smartlist_join_strings(sl, "", 0, NULL);
- test_streq(cp, "abcabc");
- tor_free(cp);
- cp = smartlist_join_strings(sl, "!", 0, NULL);
- test_streq(cp, "abc!a!bc!");
- tor_free(cp);
- cp = smartlist_join_strings(sl, "XY", 0, NULL);
- test_streq(cp, "abcXYaXYbcXY");
- tor_free(cp);
- cp = smartlist_join_strings(sl, "XY", 1, NULL);
- test_streq(cp, "abcXYaXYbcXYXY");
- tor_free(cp);
- cp = smartlist_join_strings(sl, "", 1, NULL);
- test_streq(cp, "abcabc");
- tor_free(cp);
+ cp_alloc = smartlist_join_strings(sl, "", 0, NULL);
+ test_streq(cp_alloc, "abcabc");
+ tor_free(cp_alloc);
+ cp_alloc = smartlist_join_strings(sl, "!", 0, NULL);
+ test_streq(cp_alloc, "abc!a!bc!");
+ tor_free(cp_alloc);
+ cp_alloc = smartlist_join_strings(sl, "XY", 0, NULL);
+ test_streq(cp_alloc, "abcXYaXYbcXY");
+ tor_free(cp_alloc);
+ cp_alloc = smartlist_join_strings(sl, "XY", 1, NULL);
+ test_streq(cp_alloc, "abcXYaXYbcXYXY");
+ tor_free(cp_alloc);
+ cp_alloc = smartlist_join_strings(sl, "", 1, NULL);
+ test_streq(cp_alloc, "abcabc");
+ tor_free(cp_alloc);
smartlist_split_string(sl, "/def/ /ghijk", "/", 0, 0);
test_eq(8, smartlist_len(sl));
@@ -1768,12 +1768,12 @@
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
- cp = smartlist_join_strings(sl, "XY", 0, NULL);
- test_streq(cp, "");
- tor_free(cp);
- cp = smartlist_join_strings(sl, "XY", 1, NULL);
- test_streq(cp, "XY");
- tor_free(cp);
+ cp_alloc = smartlist_join_strings(sl, "XY", 0, NULL);
+ test_streq(cp_alloc, "");
+ tor_free(cp_alloc);
+ cp_alloc = smartlist_join_strings(sl, "XY", 1, NULL);
+ test_streq(cp_alloc, "XY");
+ tor_free(cp_alloc);
smartlist_split_string(sl, " z <> zhasd <> <> bnud<> ", "<>",
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
@@ -1805,13 +1805,13 @@
smartlist_split_string(sl, "the,onion,router,by,arma,and,nickm", ",", 0, 0);
test_eq(7, smartlist_len(sl));
smartlist_sort(sl, _compare_strs);
- cp = smartlist_join_strings(sl, ",", 0, NULL);
- test_streq(cp,"and,arma,by,nickm,onion,router,the");
- tor_free(cp);
+ cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
+ test_streq(cp_alloc,"and,arma,by,nickm,onion,router,the");
+ tor_free(cp_alloc);
smartlist_swap(sl, 1, 5);
- cp = smartlist_join_strings(sl, ",", 0, NULL);
- test_streq(cp,"and,router,by,nickm,onion,arma,the");
- tor_free(cp);
+ cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
+ test_streq(cp_alloc,"and,router,by,nickm,onion,arma,the");
+ tor_free(cp_alloc);
smartlist_shuffle(sl);
test_eq(7, smartlist_len(sl));
test_assert(smartlist_string_isin(sl, "and"));
@@ -1848,17 +1848,17 @@
/* Test reverse() and pop_last() */
smartlist_reverse(sl);
- cp = smartlist_join_strings(sl, ",", 0, NULL);
- test_streq(cp,"the,router,onion,nickm,by,arma,and");
- tor_free(cp);
+ cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
+ test_streq(cp_alloc,"the,router,onion,nickm,by,arma,and");
+ tor_free(cp_alloc);
cp = smartlist_pop_last(sl);
- test_streq(cp, "and");
- tor_free(cp);
+ test_streq(cp_alloc, "and");
+ tor_free(cp_alloc);
test_eq(smartlist_len(sl), 6);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
- cp = smartlist_pop_last(sl);
- test_eq(cp, NULL);
+ cp_alloc = smartlist_pop_last(sl);
+ test_eq(cp_alloc, NULL);
/* Test uniq() */
smartlist_split_string(sl,
@@ -1866,9 +1866,9 @@
",", 0, 0);
smartlist_sort(sl, _compare_strs);
smartlist_uniq(sl, _compare_strs, _tor_free);
- cp = smartlist_join_strings(sl, ",", 0, NULL);
- test_streq(cp, "50,a,canal,man,noon,panama,plan,radar");
- tor_free(cp);
+ cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
+ test_streq(cp_alloc, "50,a,canal,man,noon,panama,plan,radar");
+ tor_free(cp_alloc);
/* Test string_isin and isin_case and num_isin */
test_assert(smartlist_string_isin(sl, "noon"));
@@ -1907,19 +1907,19 @@
smartlist_add(sl, cp);
smartlist_remove(sl, cp);
tor_free(cp);
- cp = smartlist_join_strings(sl, ",", 0, NULL);
- test_streq(cp, "Some,say,the,Earth,fire,end,in,ice,and,some,in");
- tor_free(cp);
+ cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
+ test_streq(cp_alloc, "Some,say,the,Earth,fire,end,in,ice,and,some,in");
+ tor_free(cp_alloc);
smartlist_string_remove(sl, "in");
- cp = smartlist_join_strings2(sl, "+XX", 1, 0, &sz);
- test_streq(cp, "Some+say+the+Earth+fire+end+some+ice+and");
+ cp_alloc = smartlist_join_strings2(sl, "+XX", 1, 0, &sz);
+ test_streq(cp_alloc, "Some+say+the+Earth+fire+end+some+ice+and");
test_eq((int)sz, 40);
- tor_free(cp);
done:
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_free(sl);
+ tor_free(cp_alloc);
}
static void
@@ -2015,7 +2015,7 @@
smartlist_t *sl = smartlist_create();
smartlist_t *sl2 = smartlist_create(), *sl3 = smartlist_create(),
*sl4 = smartlist_create();
- char *cp;
+ char *joined=NULL;
/* unique, sorted. */
smartlist_split_string(sl,
"Abashments Ambush Anchorman Bacon Banks Borscht "
@@ -2042,13 +2042,13 @@
SMARTLIST_FOREACH(sl4, const char *, cp,
test_assert(smartlist_isin(sl, cp) &&
smartlist_string_isin(sl2, cp)));
- cp = smartlist_join_strings(sl3, ",", 0, NULL);
- test_streq(cp, "Anemias,Anemias,Crossbowmen,Work");
- tor_free(cp);
- cp = smartlist_join_strings(sl4, ",", 0, NULL);
- test_streq(cp, "Ambush,Anchorman,Anchorman,Bacon,Inhumane,Insurance,"
+ joined = smartlist_join_strings(sl3, ",", 0, NULL);
+ test_streq(joined, "Anemias,Anemias,Crossbowmen,Work");
+ tor_free(joined);
+ joined = smartlist_join_strings(sl4, ",", 0, NULL);
+ test_streq(joined, "Ambush,Anchorman,Anchorman,Bacon,Inhumane,Insurance,"
"Knish,Know,Manners,Manners,Maraschinos,Wombats,Wombats");
- tor_free(cp);
+ tor_free(joined);
done:
smartlist_free(sl4);
@@ -2057,6 +2057,7 @@
smartlist_free(sl2);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_free(sl);
+ tor_free(joined);
}
static void
More information about the tor-commits
mailing list