From ef319d7fc7e94393accfe5cc44085b1fee466644 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Mon, 7 Nov 2011 02:26:10 +0000 Subject: [PATCH] TeamDebugger's destructor must not assume that any of its heap allocations have succeeded, since Init() can terminate early in a number of instances. Resolves #8096. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43208 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/debugger/TeamDebugger.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/apps/debugger/TeamDebugger.cpp b/src/apps/debugger/TeamDebugger.cpp index a7d098c721..628678d245 100644 --- a/src/apps/debugger/TeamDebugger.cpp +++ b/src/apps/debugger/TeamDebugger.cpp @@ -175,8 +175,10 @@ TeamDebugger::~TeamDebugger() wait_for_thread(fDebugEventListener, NULL); // terminate UI - fUserInterface->Terminate(); - fUserInterface->ReleaseReference(); + if (fUserInterface != NULL) { + fUserInterface->Terminate(); + fUserInterface->ReleaseReference(); + } ThreadHandler* threadHandler = fThreadHandlers.Clear(true); while (threadHandler != NULL) { @@ -185,11 +187,13 @@ TeamDebugger::~TeamDebugger() threadHandler = next; } - ImageHandler* imageHandler = fImageHandlers->Clear(true); - while (imageHandler != NULL) { - ImageHandler* next = imageHandler->fNext; - imageHandler->ReleaseReference(); - imageHandler = next; + if (fImageHandlers != NULL) { + ImageHandler* imageHandler = fImageHandlers->Clear(true); + while (imageHandler != NULL) { + ImageHandler* next = imageHandler->fNext; + imageHandler->ReleaseReference(); + imageHandler = next; + } } delete fImageHandlers;