Fix bug #8160, one case left where delta of previously captured frame is incorrectly...
authordarkjames <darkjames@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 24 Feb 2013 00:45:59 +0000 (00:45 +0000)
committerdarkjames <darkjames@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 24 Feb 2013 00:45:59 +0000 (00:45 +0000)
 two passes wireshark && previously captured frame hasn't pass filter

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@47849 f5534014-38df-0310-8fa8-9805f1628bb7

tshark.c

index 06954b01b44fde9586487c3b9630dd72c4dac299..f97c12ca19013fb7c29832cdd5ef0ec381a224f2 100644 (file)
--- a/tshark.c
+++ b/tshark.c
@@ -2672,15 +2672,16 @@ process_packet_first_pass(capture_file *cf,
 
   if (passed) {
     frame_data_set_after_dissect(&fdlocal, &cum_bytes);
-    prev_dis_frame = fdlocal;
-    prev_dis = &prev_dis_frame;
-    frame_data_sequence_add(cf->frames, &fdlocal);
+    prev_cap = prev_dis = frame_data_sequence_add(cf->frames, &fdlocal);
     cf->count++;
+  } else {
+    /* TODO, bug #8160 */
+    /*
+    prev_cap_frame = fdlocal;
+    prev_cap = &prev_cap_frame;
+     */
   }
 
-  prev_cap_frame = fdlocal;
-  prev_cap = &prev_cap_frame;
-
   if (do_dissection)
     epan_dissect_cleanup(&edt);
 
@@ -3199,8 +3200,6 @@ process_packet(capture_file *cf, gint64 offset, struct wtap_pkthdr *whdr,
 
   if (passed) {
     frame_data_set_after_dissect(&fdata, &cum_bytes);
-    prev_dis_frame = fdata;
-    prev_dis = &prev_dis_frame;
 
     /* Process this packet. */
     if (print_packet_info) {
@@ -3239,6 +3238,10 @@ process_packet(capture_file *cf, gint64 offset, struct wtap_pkthdr *whdr,
         exit(2);
       }
     }
+
+    /* this must be set after print_packet() [bug #8160] */
+    prev_dis_frame = fdata;
+    prev_dis = &prev_dis_frame;
   }
 
   prev_cap_frame = fdata;