diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-11-19 02:38:52 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-11-23 22:44:09 +0100 |
commit | a8d39e8846e9a7cc981094a3e0ede71eb3706d42 (patch) | |
tree | 946fa7e8ffb32c13bc4ec197bb039aec044610ea /libavcodec | |
parent | 721305e2804b065f567c04d2aa71704355b2c90e (diff) | |
download | ffmpeg-a8d39e8846e9a7cc981094a3e0ede71eb3706d42.tar.gz |
avcodec/flashsvenc: Change check for first frame
AVCodecContext.frame_number is actually only incremented
in case encoding was successfull; if e.g. the ff_alloc_packet()
below fails, it won't be incremented and therefore it is possible
for the previous_frame buffer to be allocated for multiple
first frames, leaking every one except the last.
So check for whether there already is a previous frame instead.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/flashsvenc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libavcodec/flashsvenc.c b/libavcodec/flashsvenc.c index bd912fb401..ba693ca8f3 100644 --- a/libavcodec/flashsvenc.c +++ b/libavcodec/flashsvenc.c @@ -209,7 +209,7 @@ static int flashsv_encode_frame(AVCodecContext *avctx, AVPacket *pkt, int opt_w = 4, opt_h = 4; /* First frame needs to be a keyframe */ - if (avctx->frame_number == 0) { + if (!s->previous_frame) { s->previous_frame = av_mallocz(FFABS(p->linesize[0]) * s->image_height); if (!s->previous_frame) { av_log(avctx, AV_LOG_ERROR, "Memory allocation failed.\n"); |