[FFmpeg-devel,1/3] avcodec/videotoolboxenc: fix mutex/cond leak in error path

Submitted by Thomas Guillem on June 11, 2018, 2:21 p.m.

Details

Message ID 20180611142119.12001-1-thomas@gllm.fr
State Accepted
Commit ce2330bdf896458131fcd00f9284c31617adcf01
Headers show

Commit Message

Thomas Guillem June 11, 2018, 2:21 p.m.
The leak could happen when the vtenc_create_encoder() function failed.
---
 libavcodec/videotoolboxenc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index 7796a685c2..9f2a71b15d 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -2473,13 +2473,14 @@  static av_cold int vtenc_close(AVCodecContext *avctx)
 {
     VTEncContext *vtctx = avctx->priv_data;
 
+    pthread_cond_destroy(&vtctx->cv_sample_sent);
+    pthread_mutex_destroy(&vtctx->lock);
+
     if(!vtctx->session) return 0;
 
     VTCompressionSessionCompleteFrames(vtctx->session,
                                        kCMTimeIndefinite);
     clear_frame_queue(vtctx);
-    pthread_cond_destroy(&vtctx->cv_sample_sent);
-    pthread_mutex_destroy(&vtctx->lock);
     CFRelease(vtctx->session);
     vtctx->session = NULL;