Assorted changes from work at BBN. Most are minor, and several are in
support of more significant changes not in this commit. The last item
in the ChangeLog below may be needed for p2mp to work correctly.
2004-08-31 David Wiggins <dwiggins@bbn.com>
* hash.c (hash_iterate): Save next pointer before calling
procedure, so that iteration works even if the called procedure
deletes the hash backet.
* linklist.h (listtail): new macro, not yet used.
2004-08-31 David Wiggins <dwiggins@bbn.com>
* ospf_spf.c (ospf_spf_calculate): Many more comments and debug
print statements. New function ospf_vertex_dump used in debugging.
2004-08-31 David Wiggins <dwiggins@bbn.com>
* ospf_spf.h (struct vertex): Comments for flags and structure members.
2004-08-31 David Wiggins <dwiggins@bbn.com>
* ospf_route.c: When finding an alternate route, log cost as well.
2004-08-31 David Wiggins <dwiggins@bbn.com>
* ospf_interface.c (ospf_lookup_if_params): Initialize af in
struct prefix allocated on stack.
2004-08-31 David Wiggins <dwiggins@bbn.com>
* ospf_packet.c (ospf_ls_ack_send_delayed): In p2mp mode, send
acks to AllSPFRouters, rather than All-DR.
diff --git a/lib/hash.c b/lib/hash.c
index 4097507..e89171b 100644
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -142,10 +142,17 @@
{
int i;
struct hash_backet *hb;
+ struct hash_backet *hbnext;
for (i = 0; i < hash->size; i++)
- for (hb = hash->index[i]; hb; hb = hb->next)
- (*func) (hb, arg);
+ for (hb = hash->index[i]; hb; hb = hbnext)
+ {
+ /* get pointer to next hash backet here, in case (*func)
+ * decides to delete hb by calling hash_release
+ */
+ hbnext = hb->next;
+ (*func) (hb, arg);
+ }
}
/* Clean up hash. */