From d57530675d984f0ce4b0c2bc4e97d2f0fd6f4f40 Mon Sep 17 00:00:00 2001 From: Piotr Kosko Date: Fri, 2 Oct 2020 12:19:32 +0200 Subject: [PATCH] [Common] Fixed possible memory leak [verification] Code compiles without errors Change-Id: Ib8c7843461a575fd05d3b28e4db1fab35cc08ccb --- src/common/task-queue.cpp | 10 ++++++++-- src/common/task-queue.h | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/common/task-queue.cpp b/src/common/task-queue.cpp index 9bafdae4..f5202107 100644 --- a/src/common/task-queue.cpp +++ b/src/common/task-queue.cpp @@ -39,7 +39,10 @@ void* TaskQueue::WorkCallback(void* data) { if (nullptr != d) { d->work_callback_(); if (d->after_work_callback_) { - g_idle_add(AfterWorkCallback, d); + if (!g_idle_add(AfterWorkCallback, d)) { + LoggerE("g_idle_add failed"); + delete d; + } } } return nullptr; @@ -61,7 +64,10 @@ void TaskQueue::Queue(const std::function& work, const std::function& work) { QueueData* d = new QueueData(); d->after_work_callback_ = work; - g_idle_add(AfterWorkCallback, d); + if (!g_idle_add(AfterWorkCallback, d)) { + LoggerE("g_idle_add failed"); + delete d; + } } } // namespace common diff --git a/src/common/task-queue.h b/src/common/task-queue.h index fb3300a3..94a97af4 100644 --- a/src/common/task-queue.h +++ b/src/common/task-queue.h @@ -114,7 +114,10 @@ void* TaskQueue::WorkCallback(void* data) { QueueData* d = static_cast*>(data); if (nullptr != d) { d->work_callback_(d->data_); - g_idle_add(AfterWorkCallback, d); + if (!g_idle_add(AfterWorkCallback, d)) { + LoggerE("g_idle_add failed"); + delete d; + } } return nullptr; } @@ -142,7 +145,10 @@ void TaskQueue::Async(const std::function&)>& work QueueData* d = new QueueData(); d->after_work_callback_ = work; d->data_ = data; - g_idle_add(AfterWorkCallback, d); + if (!g_idle_add(AfterWorkCallback, d)) { + LoggerE("g_idle_add failed"); + delete d; + } } } // namespace common -- 2.34.1