Modify Unref() method of LoaderContext 33/294833/2
authorHwankyu Jhun <h.jhun@samsung.com>
Tue, 27 Jun 2023 09:08:55 +0000 (09:08 +0000)
committerHwankyu Jhun <h.jhun@samsung.com>
Tue, 27 Jun 2023 09:16:39 +0000 (09:16 +0000)
The ref count should not be decreased when the value is zero.

Change-Id: I88ac89ed6f6fa9af753324723a632779a09eb28b
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/launchpad-process-pool/launchpad.cc
src/launchpad-process-pool/loader_context.cc

index 64dab34..62cb876 100644 (file)
@@ -603,13 +603,15 @@ void Launchpad::OnSigchldReceived(pid_t pid) {
 void Launchpad::OnLoaderPrepared(LoaderContext* loader_context) {
   _W("Loader is prepared. name(%s), pid(%d)",
       loader_context->GetLoaderName().c_str(), loader_context->GetPid());
-  loader_context->Unref();
+  if (loader_context->RefCount() == 0)
+    return;
 
   auto iter = pending_requests_.begin();
   while (iter != pending_requests_.end()) {
     auto request = *iter;
     auto context = request->GetAvailableLoaderContext();
     if (context != nullptr && context.get() == loader_context) {
+      loader_context->Unref();
       pending_requests_.erase(iter);
       LaunchRequestDo(request);
       LaunchRequestComplete(request);
index 17b327e..a1b1cfc 100644 (file)
@@ -571,7 +571,8 @@ void LoaderContext::Ref() {
 }
 
 void LoaderContext::Unref() {
-  ref_count_--;
+  if (ref_count_ > 0)
+    ref_count_--;
 }
 
 uint32_t LoaderContext::RefCount() const {