From 9b2d86d83d198d5796e80a8cfbeb36b8892f8dfc Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 7 Nov 2007 17:29:16 +0000 Subject: [PATCH] r16527@catbus: nickm | 2007-11-07 12:27:59 -0500 Re-set all of the indices immediately after sorting old_routers. Fixes a crash. svn:r12413 --- src/or/routerlist.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 11dabfe13c..f51f7cf4e8 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -2987,12 +2987,16 @@ routerlist_remove_old_routers(void) goto done; smartlist_sort(routerlist->old_routers, _compare_old_routers_by_identity); + /* Fix indices. */ + for (i = 0; i < smartlist_len(routerlist_old_routers); ++i) { + signed_descriptor_t *r = smartlist_get(routerlist->old_routers, i); + r->routerlist_index = i; + } /* Iterate through the list from back to front, so when we remove descriptors * we don't mess up groups we haven't gotten to. */ for (i = smartlist_len(routerlist->old_routers)-1; i >= 0; --i) { signed_descriptor_t *r = smartlist_get(routerlist->old_routers, i); - r->routerlist_index = i; if (!cur_id) { cur_id = r->identity_digest; hi = i; -- 2.47.3