diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-04-06 17:09:32 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-04-06 18:10:47 +0200 |
commit | 4ccd7cb45b9aa46d94c29dbd1c065b652bda2319 (patch) | |
tree | 2557767128d96ee449121d3cab10853cb657ff74 | |
parent | c1b24ca762cba20236190cd7b24e84a9ad788bcb (diff) | |
download | ffmpeg-4ccd7cb45b9aa46d94c29dbd1c065b652bda2319.tar.gz |
avformat/oggdec/ogg_read_packet(): factorize failure code path
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/oggdec.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c index b969537fb0..2a2be2a509 100644 --- a/libavformat/oggdec.c +++ b/libavformat/oggdec.c @@ -793,11 +793,8 @@ retry: uint8_t *side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_SKIP_SAMPLES, 10); - if(side_data == NULL) { - av_free_packet(pkt); - av_free(pkt); - return AVERROR(ENOMEM); - } + if(side_data == NULL) + goto fail; AV_WL32(side_data + 4, os->end_trimming); os->end_trimming = 0; } @@ -806,17 +803,19 @@ retry: uint8_t *side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_METADATA_UPDATE, os->new_metadata_size); - if(side_data == NULL) { - av_free_packet(pkt); - av_free(pkt); - return AVERROR(ENOMEM); - } + if(side_data == NULL) + goto fail; + memcpy(side_data, os->new_metadata, os->new_metadata_size); av_freep(&os->new_metadata); os->new_metadata_size = 0; } return psize; +fail: + av_free_packet(pkt); + av_free(pkt); + return AVERROR(ENOMEM); } static int64_t ogg_read_timestamp(AVFormatContext *s, int stream_index, |