From 0fcc5a784e7d43055aac62318dd855f866351c9d Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Wed, 5 Aug 2020 16:46:06 +0100 Subject: [PATCH] (ffmpeg) Fix memory leak/struct member issue --- cores/libretro-ffmpeg/video_buffer.c | 10 +++------- cores/libretro-ffmpeg/video_buffer.h | 6 ++++++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cores/libretro-ffmpeg/video_buffer.c b/cores/libretro-ffmpeg/video_buffer.c index 603a5e89ad..bc767f1150 100644 --- a/cores/libretro-ffmpeg/video_buffer.c +++ b/cores/libretro-ffmpeg/video_buffer.c @@ -73,11 +73,8 @@ video_buffer_t *video_buffer_create( b->buffer[i].hw_source = av_frame_alloc(); #endif b->buffer[i].target = av_frame_alloc(); - b->buffer[i].frame_buf = (uint8_t*)av_malloc(frame_size); - avpicture_fill((AVPicture*) - b->buffer[i].target, - (const uint8_t*)b->buffer[i].frame_buf, + avpicture_alloc((AVPicture*)b->buffer[i].target, PIX_FMT_RGB32, width, height); if (!b->buffer[i].sws || @@ -85,8 +82,7 @@ video_buffer_t *video_buffer_create( #if LIBAVUTIL_VERSION_MAJOR > 55 !b->buffer[i].hw_source || #endif - !b->buffer[i].target || - !b->buffer[i].frame_buf) + !b->buffer[i].target) goto fail; } return b; @@ -114,8 +110,8 @@ void video_buffer_destroy(video_buffer_t *video_buffer) av_frame_free(&video_buffer->buffer[i].hw_source); #endif av_frame_free(&video_buffer->buffer[i].source); + avpicture_free((AVPicture*)video_buffer->buffer[i].target); av_frame_free(&video_buffer->buffer[i].target); - av_freep(&video_buffer->buffer[i].frame_buf); sws_freeContext(video_buffer->buffer[i].sws); } } diff --git a/cores/libretro-ffmpeg/video_buffer.h b/cores/libretro-ffmpeg/video_buffer.h index c5ea2093a5..179f7bc2b9 100644 --- a/cores/libretro-ffmpeg/video_buffer.h +++ b/cores/libretro-ffmpeg/video_buffer.h @@ -6,6 +6,12 @@ #include #include +#ifdef RARCH_INTERNAL +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#endif + #ifdef HAVE_SSA #include #endif