]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix the remaining instances of nexted SMARTLIST_FOREACH
authorNick Mathewson <nickm@torproject.org>
Tue, 17 Jul 2012 14:41:24 +0000 (10:41 -0400)
committerNick Mathewson <nickm@torproject.org>
Tue, 17 Jul 2012 14:41:24 +0000 (10:41 -0400)
changes/smartlist_foreach
src/or/networkstatus.c
src/or/rendservice.c

index d1e350546861331ac945cc112327dbce862945c6..0a6c9604272deeb3a7625ce7781c49a33941a58b 100644 (file)
@@ -2,3 +2,5 @@
     - Do not allow the body of any SMARTLIST_FOREACH block to exceed
       10 lines.  Doing so in the past has led to hard-to-debug code.
       The new style is to use the SMARTLIST_FOREACH_{BEGIN,END} pair.
+    - Do not allow SMARTLIST_FOREACH blocks to nest. Any nested block
+      ought to be using SMARTLIST_FOREACH_{BEGIN,END}.
index 1979250c5bc6d0d51e33b059953f85703d77a44d..fadaf90da44a3353df04745c2cfe894f7d57770b 100644 (file)
@@ -128,12 +128,12 @@ networkstatus_reset_download_failures(void)
 {
   int i;
   const smartlist_t *networkstatus_v2_list = networkstatus_get_v2_list();
-  SMARTLIST_FOREACH(networkstatus_v2_list, networkstatus_v2_t *, ns,
-     SMARTLIST_FOREACH(ns->entries, routerstatus_t *, rs,
-       {
+  SMARTLIST_FOREACH_BEGIN(networkstatus_v2_list, networkstatus_v2_t *, ns) {
+    SMARTLIST_FOREACH_BEGIN(ns->entries, routerstatus_t *, rs) {
          if (!router_get_by_descriptor_digest(rs->descriptor_digest))
            rs->need_to_mirror = 1;
-       }));;
+    } SMARTLIST_FOREACH_END(rs);
+  } SMARTLIST_FOREACH_END(ns);
 
   for (i=0; i < N_CONSENSUS_FLAVORS; ++i)
     download_status_reset(&consensus_dl_status[i]);
index 6a5187469901abe0b798eb31f9af8fa4ed26d905..6af4778dfc118841ee92ef1fc2a0da414261e57e 100644 (file)
@@ -500,16 +500,16 @@ rend_config_services(const or_options_t *options, int validate_only)
     /* Copy introduction points to new services. */
     /* XXXX This is O(n^2), but it's only called on reconfigure, so it's
      * probably ok? */
-    SMARTLIST_FOREACH(rend_service_list, rend_service_t *, new, {
-      SMARTLIST_FOREACH(old_service_list, rend_service_t *, old, {
+    SMARTLIST_FOREACH_BEGIN(rend_service_list, rend_service_t *, new) {
+      SMARTLIST_FOREACH_BEGIN(old_service_list, rend_service_t *, old) {
         if (!strcmp(old->directory, new->directory)) {
           smartlist_add_all(new->intro_nodes, old->intro_nodes);
           smartlist_clear(old->intro_nodes);
           smartlist_add(surviving_services, old);
           break;
         }
-      });
-    });
+      } SMARTLIST_FOREACH_END(old);
+    } SMARTLIST_FOREACH_END(new);
 
     /* Close introduction circuits of services we don't serve anymore. */
     /* XXXX it would be nicer if we had a nicer abstraction to use here,