[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