[FFmpeg-cvslog] avutil/hwcontext_vulkan: Fix leaks in map_from_drm
Zhao Zhili
git at videolan.org
Fri Mar 1 12:10:58 EET 2024
ffmpeg | branch: master | Zhao Zhili <zhilizhao at tencent.com> | Tue Feb 20 20:08:57 2024 +0800| [03275b0f093291542799ac6dbc9929dbb4d405bf] | committer: Zhao Zhili
avutil/hwcontext_vulkan: Fix leaks in map_from_drm
Also simplify error handing.
Signed-off-by: Zhao Zhili <zhilizhao at tencent.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=03275b0f093291542799ac6dbc9929dbb4d405bf
---
libavutil/hwcontext_vulkan.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index 747f8de3ce..818ebac2d1 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -2632,7 +2632,8 @@ static int vulkan_map_from_drm_frame_desc(AVHWFramesContext *hwfc, AVVkFrame **f
if (ret != VK_SUCCESS) {
av_log(hwctx, AV_LOG_ERROR, "Failed to create semaphore: %s\n",
ff_vk_ret2str(ret));
- return AVERROR_EXTERNAL;
+ err = AVERROR_EXTERNAL;
+ goto fail;
}
/* We'd import a semaphore onto the one we created using
@@ -2751,14 +2752,7 @@ static int vulkan_map_from_drm_frame_desc(AVHWFramesContext *hwfc, AVVkFrame **f
return 0;
fail:
- for (int i = 0; i < desc->nb_layers; i++) {
- vk->DestroyImage(hwctx->act_dev, f->img[i], hwctx->alloc);
- vk->DestroySemaphore(hwctx->act_dev, f->sem[i], hwctx->alloc);
- }
- for (int i = 0; i < desc->nb_objects; i++)
- vk->FreeMemory(hwctx->act_dev, f->mem[i], hwctx->alloc);
-
- av_free(f);
+ vulkan_frame_free(hwfc, f);
return err;
}
More information about the ffmpeg-cvslog
mailing list