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;
}
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;