aboutsummaryrefslogtreecommitdiff
path: root/src/or/networkstatus.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/or/networkstatus.c')
-rw-r--r--src/or/networkstatus.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 672b1fbc5..32f61fc86 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -864,7 +864,8 @@ networkstatus_copy_old_consensus_info(networkstatus_vote_t *new_c,
SMARTLIST_FOREACH(new_c->routerstatus_list, routerstatus_t *, rs_new,
{
int r;
- while ((r = memcmp(rs_old->identity_digest, rs_new->identity_digest,
+ while (rs_old && /* XXX020 Nick, solve this: sometimes rs_old is NULL */
+ (r = memcmp(rs_old->identity_digest, rs_new->identity_digest,
DIGEST_LEN))<0) {
if (idx == smartlist_len(old_c->routerstatus_list))
goto done;
@@ -872,6 +873,9 @@ networkstatus_copy_old_consensus_info(networkstatus_vote_t *new_c,
}
if (r>0)
continue;
+ if (r<0) /* XXX020 Nick, solve this: sometimes it's -1 which doesn't
+ * match your comment below. */
+ continue;
/* Okay, so we're looking at the same identity. */
rs_new->name_lookup_warned = rs_old->name_lookup_warned;
rs_new->last_dir_503_at = rs_old->last_dir_503_at;