[Common] Fixed possible memory leak 26/245126/1
authorPiotr Kosko <p.kosko@samsung.com>
Fri, 2 Oct 2020 10:19:32 +0000 (12:19 +0200)
committerPiotr Kosko <p.kosko@samsung.com>
Fri, 2 Oct 2020 10:27:45 +0000 (12:27 +0200)
[verification] Code compiles without errors

Change-Id: Ib8c7843461a575fd05d3b28e4db1fab35cc08ccb

src/common/task-queue.cpp
src/common/task-queue.h

index 9bafdae..f520210 100644 (file)
@@ -39,7 +39,10 @@ void* TaskQueue::WorkCallback<void>(void* data) {
   if (nullptr != d) {
     d->work_callback_();
     if (d->after_work_callback_) {
-      g_idle_add(AfterWorkCallback<void>, d);
+      if (!g_idle_add(AfterWorkCallback<void>, d)) {
+        LoggerE("g_idle_add failed");
+        delete d;
+      }
     }
   }
   return nullptr;
@@ -61,7 +64,10 @@ void TaskQueue::Queue(const std::function<void()>& work, const std::function<voi
 void TaskQueue::Async(const std::function<void()>& work) {
   QueueData<void>* d = new QueueData<void>();
   d->after_work_callback_ = work;
-  g_idle_add(AfterWorkCallback<void>, d);
+  if (!g_idle_add(AfterWorkCallback<void>, d)) {
+    LoggerE("g_idle_add failed");
+    delete d;
+  }
 }
 
 }  // namespace common
index fb3300a..94a97af 100644 (file)
@@ -114,7 +114,10 @@ void* TaskQueue::WorkCallback(void* data) {
   QueueData<T>* d = static_cast<QueueData<T>*>(data);
   if (nullptr != d) {
     d->work_callback_(d->data_);
-    g_idle_add(AfterWorkCallback<T>, d);
+    if (!g_idle_add(AfterWorkCallback<T>, d)) {
+      LoggerE("g_idle_add failed");
+      delete d;
+    }
   }
   return nullptr;
 }
@@ -142,7 +145,10 @@ void TaskQueue::Async(const std::function<void(const std::shared_ptr<T>&)>& work
   QueueData<T>* d = new QueueData<T>();
   d->after_work_callback_ = work;
   d->data_ = data;
-  g_idle_add(AfterWorkCallback<T>, d);
+  if (!g_idle_add(AfterWorkCallback<T>, d)) {
+    LoggerE("g_idle_add failed");
+    delete d;
+  }
 }
 
 }  // namespace common