Jelajahi Sumber

fix handle leak for recycler concurrent thread

Lei Shi 8 tahun lalu
induk
melakukan
0c7fe5232e
1 mengubah file dengan 5 tambahan dan 9 penghapusan
  1. 5 9
      lib/Common/Memory/Recycler.cpp

+ 5 - 9
lib/Common/Memory/Recycler.cpp

@@ -4613,7 +4613,11 @@ Recycler::FinalizeConcurrent(bool restoreState)
     }
 
     this->threadService = nullptr;
-    this->concurrentThread = nullptr;
+    if (concurrentThread != NULL)
+    {
+        CloseHandle(concurrentThread);
+        this->concurrentThread = nullptr;
+    }
 }
 
 bool
@@ -4745,10 +4749,6 @@ Recycler::ShutdownThread()
         Assert(concurrentThread != NULL || threadService->HasCallback());
 
         FinalizeConcurrent(false);
-        if (concurrentThread)
-        {
-            CloseHandle(concurrentThread);
-        }
     }
 }
 
@@ -4760,10 +4760,6 @@ Recycler::DisableConcurrent()
         Assert(concurrentThread != NULL || threadService->HasCallback());
 
         FinalizeConcurrent(true);
-        if (concurrentThread)
-        {
-            CloseHandle(concurrentThread);
-        }
         this->collectionState = CollectionStateNotCollecting;
     }
 }