mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-13 22:53:44 +01:00
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
This commit is contained in:
parent
2015479b5a
commit
f599adf40a
@ -156,6 +156,16 @@ char *smartlist_join_strings2(smartlist_t *sl, const char *join,
|
|||||||
cmd; \
|
cmd; \
|
||||||
} } while (0)
|
} } 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) \
|
#define DECLARE_MAP_FNS(maptype, keytype, prefix) \
|
||||||
typedef struct maptype maptype; \
|
typedef struct maptype maptype; \
|
||||||
typedef struct prefix##entry_t *prefix##iter_t; \
|
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. */
|
/* Remove all currently configured entry guards from entry_routers. */
|
||||||
SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri, {
|
SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri, {
|
||||||
if (is_an_entry_guard(ri->cache_info.identity_digest)) {
|
if (is_an_entry_guard(ri->cache_info.identity_digest)) {
|
||||||
smartlist_del(entry_routers, ri_sl_idx--);
|
SMARTLIST_DEL_CURRENT(entry_routers, ri);
|
||||||
ri_sl_len--;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user