From 8c67854d0580a27b6f5d187f156a5a13cb9c0802 Mon Sep 17 00:00:00 2001 From: Wonsik Jung Date: Wed, 3 Apr 2024 17:29:33 +0900 Subject: [PATCH] Fix memory leak in ATSPI event callback. Fix Memory leak in ATSPI event callback. The memory leak is related to application instance. Change-Id: I8ac3106ef409ad0691cf78d4d45f42f232d45d26 --- libaurum/src/Impl/Accessibility/AtspiAccessibleWatcher.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libaurum/src/Impl/Accessibility/AtspiAccessibleWatcher.cc b/libaurum/src/Impl/Accessibility/AtspiAccessibleWatcher.cc index d0b66ba..3c3c1a9 100644 --- a/libaurum/src/Impl/Accessibility/AtspiAccessibleWatcher.cc +++ b/libaurum/src/Impl/Accessibility/AtspiAccessibleWatcher.cc @@ -212,6 +212,7 @@ void AtspiAccessibleWatcher::appendApp(AtspiAccessibleWatcher *instance, AtspiAc mAppCount++; instance->mXMLDocMap.insert({{package, pid}, std::make_shared(std::make_shared(app), &mAppXMLLoadedCount, &mXMLMutex, &mXMLConditionVar)}); + g_object_ref(app); } } } @@ -228,8 +229,6 @@ void AtspiAccessibleWatcher::removeApp(AtspiAccessibleWatcher *instance, AtspiAc instance->mXMLDocMap.erase({package, pid}); } } - - g_object_unref(app); } gpointer AtspiAccessibleWatcher::timerThread(gpointer data) @@ -356,6 +355,11 @@ void AtspiAccessibleWatcher::onAtspiEvents(AtspiEvent *event, void *watcher) else pkg = strdup(""); + if(app) + { + g_object_unref(app); + } + instance->processCallback(event->type, name, pkg); if (!strcmp(event->type, "object:state-changed:defunct")) { -- 2.34.1