[FFmpeg-cvslog] hwcontext_vulkan: free temporary array once unneeded
Lynne
git at videolan.org
Thu Jun 15 23:04:11 EEST 2023
ffmpeg | branch: master | Lynne <dev at lynne.ee> | Tue Jun 13 04:36:54 2023 +0200| [d0f1d937fea514abb6e62ff9949eb0b304f99231] | committer: Lynne
hwcontext_vulkan: free temporary array once unneeded
Fixes a small memory leak.
This also prevents leaks on malloc/mutex init errors.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d0f1d937fea514abb6e62ff9949eb0b304f99231
---
libavutil/hwcontext_vulkan.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index c86229ba65..ca802cc86e 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -1427,24 +1427,31 @@ static int vulkan_device_init(AVHWDeviceContext *ctx)
vk->GetPhysicalDeviceQueueFamilyProperties(hwctx->phys_dev, &qf_num, qf);
p->qf_mutex = av_calloc(qf_num, sizeof(*p->qf_mutex));
- if (!p->qf_mutex)
+ if (!p->qf_mutex) {
+ av_free(qf);
return AVERROR(ENOMEM);
+ }
p->nb_tot_qfs = qf_num;
for (uint32_t i = 0; i < qf_num; i++) {
p->qf_mutex[i] = av_calloc(qf[i].queueCount, sizeof(**p->qf_mutex));
- if (!p->qf_mutex[i])
+ if (!p->qf_mutex[i]) {
+ av_free(qf);
return AVERROR(ENOMEM);
+ }
for (uint32_t j = 0; j < qf[i].queueCount; j++) {
err = pthread_mutex_init(&p->qf_mutex[i][j], NULL);
if (err != 0) {
av_log(ctx, AV_LOG_ERROR, "pthread_mutex_init failed : %s\n",
av_err2str(err));
+ av_free(qf);
return AVERROR(err);
}
}
}
+ av_free(qf);
+
graph_index = hwctx->queue_family_index;
comp_index = hwctx->queue_family_comp_index;
tx_index = hwctx->queue_family_tx_index;
More information about the ffmpeg-cvslog
mailing list