Преглед на файлове

Fix the remaining instances of nexted SMARTLIST_FOREACH

Nick Mathewson преди 12 години
родител
ревизия
efdf6c7118
променени са 3 файла, в които са добавени 10 реда и са изтрити 8 реда
  1. 2 0
      changes/smartlist_foreach
  2. 4 4
      src/or/networkstatus.c
  3. 4 4
      src/or/rendservice.c

+ 2 - 0
changes/smartlist_foreach

@@ -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}.

+ 4 - 4
src/or/networkstatus.c

@@ -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]);

+ 4 - 4
src/or/rendservice.c

@@ -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,