Revert part of 52896 and (for now) all of 52935. As Jeff pointed out,
[metze/wireshark/wip.git] / frame_tvbuff.c
index b6d454511392b62ec4a7ae59333d4ea383110907..61ab0fa84f990fbd3093b2019f06c8cd9b3554b5 100644 (file)
@@ -56,6 +56,9 @@ frame_read(struct tvb_frame *frame_tvb, struct wtap_pkthdr *phdr, Buffer *buf)
        if (cfile.wth != frame_tvb->wth)
                return FALSE;
 
+       /* XXX, frame_tvb->tvb.length + frame_tvb->offset might be not real captured packet length
+        *      can it cause some problems for wiretap readers?
+        */
        if (!wtap_seek_read(frame_tvb->wth, frame_tvb->file_off, phdr, buf, frame_tvb->tvb.length + frame_tvb->offset, &err, &err_info)) {
                switch (err) {
                        case WTAP_ERR_UNSUPPORTED_ENCAP:
@@ -208,11 +211,12 @@ frame_tvbuff_new(const frame_data *fd, const guint8 *buf)
 
        frame_tvb = (struct tvb_frame *) tvb;
 
-       /* XXX, how to handle fd->file_off == -1 (edited packet) ?? */
-       /* don't care, reassemble code was doing whole copy of data, so it'll work the same */
-
        /* XXX, wtap_can_seek() */
-       if (cfile.wth && cfile.wth->random_fh) {
+       if (cfile.wth && cfile.wth->random_fh 
+#ifdef WANT_PACKET_EDITOR
+               && fd->file_off != -1 /* generic clone for modified packets */
+#endif
+       ) {
                frame_tvb->wth = cfile.wth;
                frame_tvb->file_off = fd->file_off;
                frame_tvb->offset = 0;