aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-06-13 22:34:19 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-06-15 17:25:46 +0200
commit751f285152b90faf78d3dde76bc5cee16f093813 (patch)
tree628d307c0aa463513b7908ae6f8ff92e8bbbaffa
parent2c738c75218a1dcaec3ec6baa9b0d4b267820812 (diff)
downloadffmpeg-751f285152b90faf78d3dde76bc5cee16f093813.tar.gz
avformat/matroskadec: Move AVBufferRef instead of copying, fix memleak
EBML binary elements are already made reference-counted when read; so when populating the AVStream.attached_pic, one does not need to allocate a new buffer for the data; instead the current code just creates a new reference to the underlying AVBuffer. But this can be improved even further: Just move the already existing reference. This also fixes a memleak that happens upon error because matroska_read_close has not been called in this scenario. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> (cherry picked from commit cbe336c9e81e2d9de3a18abef887c9255a9b9da5)
-rw-r--r--libavformat/matroskadec.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index bb3a126c29..b1da40983f 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -2938,9 +2938,8 @@ static int matroska_read_header(AVFormatContext *s)
st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
av_init_packet(pkt);
- pkt->buf = av_buffer_ref(attachments[j].bin.buf);
- if (!pkt->buf)
- return AVERROR(ENOMEM);
+ pkt->buf = attachments[j].bin.buf;
+ attachments[j].bin.buf = NULL;
pkt->data = attachments[j].bin.data;
pkt->size = attachments[j].bin.size;
pkt->stream_index = st->index;