From: SukhyungKang Date: Wed, 20 Dec 2023 09:12:11 +0000 (+0900) Subject: Remove event after using to prevent leak X-Git-Tag: accepted/tizen/8.0/unified/20240101.155049~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=297e2fec2e40426c855439ede3d84a6ab8208307;p=platform%2Fcore%2Fappfw%2Fdata-provider-master.git Remove event after using to prevent leak Change-Id: Id9cdaf2dfd4fce11ff280e29ddeeda03f84b061a Signed-off-by: SukhyungKang --- diff --git a/src/service_common.cc b/src/service_common.cc index 4983cce..795c1de 100644 --- a/src/service_common.cc +++ b/src/service_common.cc @@ -98,17 +98,32 @@ void PackageEventListener::OnPkgmgrEvent(std::shared_ptr args) } if (args->GetEventName().compare(std::string("ok")) == 0) { - for (auto& a : pkgmgr_event_list_) { - if (a->GetTargetUid() == args->GetTargetUid() && - a->GetPkgId().compare(args->GetPkgId()) == 0) { - if (a->GetEventName().compare(std::string("install")) == 0) + auto iter = pkgmgr_event_list_.begin(); + while(iter != pkgmgr_event_list_.end()) { + if ((*iter)->GetTargetUid() == args->GetTargetUid() && + (*iter)->GetPkgId().compare(args->GetPkgId()) == 0) { + if ((*iter)->GetEventName().compare(std::string("install")) == 0) _package_install_cb(args->GetTargetUid(), args->GetPkgId().c_str()); - else if (a->GetEventName().compare(std::string("uninstall")) == 0) + else if ((*iter)->GetEventName().compare(std::string("uninstall")) == 0) _package_uninstall_cb(args->GetTargetUid(), args->GetPkgId().c_str()); - else if (a->GetEventName().compare(std::string("enable_app")) == 0) + else if ((*iter)->GetEventName().compare(std::string("enable_app")) == 0) _app_enabled_cb(args->GetTargetUid(), args->GetPkgId().c_str()); - else if (a->GetEventName().compare(std::string("disable_app")) == 0) + else if ((*iter)->GetEventName().compare(std::string("disable_app")) == 0) _app_disabled_cb(args->GetTargetUid(), args->GetPkgId().c_str()); + + iter = pkgmgr_event_list_.erase(iter); + } else { + iter++; + } + } + } else if (args->GetEventName().compare(std::string("fail")) == 0) { + auto iter = pkgmgr_event_list_.begin(); + while(iter != pkgmgr_event_list_.end()) { + if ((*iter)->GetTargetUid() == args->GetTargetUid() && + (*iter)->GetPkgId().compare(args->GetPkgId()) == 0) { + iter = pkgmgr_event_list_.erase(iter); + } else { + iter++; } } } @@ -127,17 +142,32 @@ void PackageEventListener::OnPkgmgrAppEvent(std::shared_ptr } if (args->GetEventName().compare(std::string("ok")) == 0) { - for (auto& a : pkgmgr_app_event_list_) { - if (a->GetTargetUid() == args->GetTargetUid() && - a->GetPkgId().compare(args->GetPkgId()) == 0) { - if (a->GetEventName().compare(std::string("install")) == 0) + auto iter = pkgmgr_app_event_list_.begin(); + while(iter != pkgmgr_app_event_list_.end()) { + if ((*iter)->GetTargetUid() == args->GetTargetUid() && + (*iter)->GetPkgId().compare(args->GetPkgId()) == 0) { + if ((*iter)->GetEventName().compare(std::string("install")) == 0) _package_install_cb(args->GetTargetUid(), args->GetPkgId().c_str()); - else if (a->GetEventName().compare(std::string("uninstall")) == 0) + else if ((*iter)->GetEventName().compare(std::string("uninstall")) == 0) _package_uninstall_cb(args->GetTargetUid(), args->GetPkgId().c_str()); - else if (a->GetEventName().compare(std::string("enable_app")) == 0) + else if ((*iter)->GetEventName().compare(std::string("enable_app")) == 0) _app_enabled_cb(args->GetTargetUid(), args->GetPkgId().c_str()); - else if (a->GetEventName().compare(std::string("disable_app")) == 0) + else if ((*iter)->GetEventName().compare(std::string("disable_app")) == 0) _app_disabled_cb(args->GetTargetUid(), args->GetPkgId().c_str()); + + iter = pkgmgr_app_event_list_.erase(iter); + } else { + iter++; + } + } + } else if (args->GetEventName().compare(std::string("fail")) == 0) { + auto iter = pkgmgr_app_event_list_.begin(); + while(iter != pkgmgr_app_event_list_.end()) { + if ((*iter)->GetTargetUid() == args->GetTargetUid() && + (*iter)->GetPkgId().compare(args->GetPkgId()) == 0) { + iter = pkgmgr_app_event_list_.erase(iter); + } else { + iter++; } } }