Skip to content
Snippets Groups Projects
Commit f599adf4 authored by Nick Mathewson's avatar Nick Mathewson :game_die:
Browse files

r11909@catbus: nickm | 2007-02-24 02:37:40 -0500

 Move tricky "delete the member of the smartlist currently under iteration" logic into its own happyfun macro.


svn:r9633
parent 2015479b
No related branches found
No related tags found
No related merge requests found
......@@ -156,6 +156,16 @@ char *smartlist_join_strings2(smartlist_t *sl, const char *join,
cmd; \
} } while (0)
/** Helper: While in a SMARTLIST_FOREACH loop over the list <b>sl</b> indexed
* with the variable <b>var</b>, remover the current element in a way that
* won't confuse the loop. */
#define SMARTLIST_DEL_CURRENT(sl, var) \
do { \
smartlist_del(sl, var ## _sl_idx); \
--var ## _sl_idx; \
--var ## _sl_len; \
} while (0);
#define DECLARE_MAP_FNS(maptype, keytype, prefix) \
typedef struct maptype maptype; \
typedef struct prefix##entry_t *prefix##iter_t; \
......
......@@ -2280,8 +2280,7 @@ entry_guards_prepend_from_config(void)
/* Remove all currently configured entry guards from entry_routers. */
SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri, {
if (is_an_entry_guard(ri->cache_info.identity_digest)) {
smartlist_del(entry_routers, ri_sl_idx--);
ri_sl_len--;
SMARTLIST_DEL_CURRENT(entry_routers, ri);
}
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment