Browse Source

avformat/avienc: Fix memleaks on errors

Fixes CID1361951

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
tags/n3.1
Michael Niedermayer 9 years ago
parent
commit
9d5894b239
1 changed files with 9 additions and 6 deletions
  1. +9
    -6
      libavformat/avienc.c

+ 9
- 6
libavformat/avienc.c View File

@@ -728,10 +728,10 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt)
} else
reshuffle_ret = 0;
if (par->format == AV_PIX_FMT_PAL8) {
int ret2 = ff_get_packet_palette(s, opkt, reshuffle_ret, avist->palette);
if (ret2 < 0)
return ret2;
if (ret2) {
ret = ff_get_packet_palette(s, opkt, reshuffle_ret, avist->palette);
if (ret < 0)
goto fail;
if (ret) {
int pal_size = 1 << par->bits_per_coded_sample;
int pc_tag, i;

@@ -763,7 +763,7 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt)
ret = avi_add_ientry(s, stream_index, tag, AVIIF_NO_TIME,
pal_size * 4 + 4);
if (ret < 0)
return ret;
goto fail;
}
pc_tag = ff_start_tag(pb, tag);
avio_w8(pb, 0);
@@ -780,7 +780,10 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt)
}
if (reshuffle_ret) {
ret = avi_write_packet_internal(s, pkt);
av_packet_free(&pkt);

fail:
if (reshuffle_ret)
av_packet_free(&pkt);
return ret;
}
}


Loading…
Cancel
Save