Richard, you're latest modification to file.c seems puzzling to me.
I think your one-line addition was unnecessary.
You added:
diff -u -r1.217 -r1.218
--- file.c 2000/09/10 06:44:33 1.217
+++ file.c 2000/09/11 07:33:55 1.218
@@ -1,7 +1,7 @@
/* file.c
* File I/O routines
*
- * $Id: file.c,v 1.217 2000/09/10 06:44:33 guy Exp $
+ * $Id: file.c,v 1.218 2000/09/11 07:33:55 sharpe Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@xxxxxxxx>
@@ -978,6 +978,15 @@
* data (the per-frame data itself was freed by
* "init_all_protocols()"). */
fdata->flags.visited = 0;
+ fdata->pfd = NULL;
+ }
+
So now the midsection of rescan_packets() looks like:
if (redissect) {
/* Since all state for the frame was destroyed, mark the frame
* as not visited, and null out the pointer to the per-frame
* data (the per-frame data itself was freed by
* "init_all_protocols()"). */
fdata->flags.visited = 0;
fdata->pfd = NULL; <---- your addition
}
/* If there is any per-frame data, delete that, as what it points to
* has gone as well.
*/
if (fdata->pfd) {
g_slist_free(fdata->pfd);
fdata->pfd = NULL;
}
Isn't the line that you added taken care of by the next if() statement?
--gilbert