From 7d7de1352740d11c8eb7fde6890164bec391a7d2 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 26 Apr 2022 17:50:53 -0400 Subject: [PATCH] HaikuDepot: Fix leak of ProcessCoordinators. This function is supposed to take ownership of the coordinator item, but it didn't do that in all cases. Use a BReference(..., true) to do that. --- src/apps/haikudepot/ui/MainWindow.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/apps/haikudepot/ui/MainWindow.cpp b/src/apps/haikudepot/ui/MainWindow.cpp index 77ace4bc2d..ce42668093 100644 --- a/src/apps/haikudepot/ui/MainWindow.cpp +++ b/src/apps/haikudepot/ui/MainWindow.cpp @@ -1419,12 +1419,12 @@ MainWindow::_HandleUserUsageConditionsNotLatest( void MainWindow::_AddProcessCoordinator(ProcessCoordinator* item) { + BReference itemRef(item, true); AutoLocker lock(&fCoordinatorLock); if (fShouldCloseWhenNoProcessesToCoordinate) { HDINFO("system shutting down --> new process coordinator [%s] rejected", item->Name().String()); - delete item; return; } @@ -1435,10 +1435,9 @@ MainWindow::_AddProcessCoordinator(ProcessCoordinator* item) debugger("unable to acquire the process coordinator sem"); HDINFO("adding and starting a process coordinator [%s]", item->Name().String()); - fCoordinator = BReference(item); + fCoordinator = itemRef; fCoordinator->Start(); - } - else { + } else { HDINFO("adding process coordinator [%s] to the queue", item->Name().String()); fCoordinatorQueue.push(item);