Browse Source

lavf/vobsub: free index pseudo-packet.

tags/n2.0
Nicolas George 12 years ago
parent
commit
cdd78a65f4
1 changed files with 9 additions and 2 deletions
  1. +9
    -2
      libavformat/mpeg.c

+ 9
- 2
libavformat/mpeg.c View File

@@ -805,6 +805,8 @@ end:
return ret;
}

#define FAIL(r) do { ret = r; goto fail; } while (0)

static int vobsub_read_packet(AVFormatContext *s, AVPacket *pkt)
{
MpegDemuxContext *vobsub = s->priv_data;
@@ -838,7 +840,7 @@ static int vobsub_read_packet(AVFormatContext *s, AVPacket *pkt)

ret = mpegps_read_pes_header(vobsub->sub_ctx, NULL, &startcode, &pts, &dts);
if (ret < 0)
return ret;
FAIL(ret);
to_read = ret & 0xffff;

/* this prevents reads above the current packet */
@@ -855,7 +857,7 @@ static int vobsub_read_packet(AVFormatContext *s, AVPacket *pkt)

ret = av_grow_packet(pkt, to_read);
if (ret < 0)
return ret;
FAIL(ret);

n = avio_read(pb, pkt->data + (pkt->size - to_read), to_read);
if (n < to_read)
@@ -870,7 +872,12 @@ static int vobsub_read_packet(AVFormatContext *s, AVPacket *pkt)
pkt->pos = idx_pkt.pos;
pkt->stream_index = idx_pkt.stream_index;

av_free_packet(&idx_pkt);
return 0;

fail:
av_free_packet(&idx_pkt);
return ret;
}

static int vobsub_read_seek(AVFormatContext *s, int stream_index,


Loading…
Cancel
Save