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
This commit is contained in:
Rene Gollent
2011-11-07 02:26:10 +00:00
parent a2db8c5653
commit ef319d7fc7
+4
View File
@@ -175,8 +175,10 @@ TeamDebugger::~TeamDebugger()
wait_for_thread(fDebugEventListener, NULL); wait_for_thread(fDebugEventListener, NULL);
// terminate UI // terminate UI
if (fUserInterface != NULL) {
fUserInterface->Terminate(); fUserInterface->Terminate();
fUserInterface->ReleaseReference(); fUserInterface->ReleaseReference();
}
ThreadHandler* threadHandler = fThreadHandlers.Clear(true); ThreadHandler* threadHandler = fThreadHandlers.Clear(true);
while (threadHandler != NULL) { while (threadHandler != NULL) {
@@ -185,12 +187,14 @@ TeamDebugger::~TeamDebugger()
threadHandler = next; threadHandler = next;
} }
if (fImageHandlers != NULL) {
ImageHandler* imageHandler = fImageHandlers->Clear(true); ImageHandler* imageHandler = fImageHandlers->Clear(true);
while (imageHandler != NULL) { while (imageHandler != NULL) {
ImageHandler* next = imageHandler->fNext; ImageHandler* next = imageHandler->fNext;
imageHandler->ReleaseReference(); imageHandler->ReleaseReference();
imageHandler = next; imageHandler = next;
} }
}
delete fImageHandlers; delete fImageHandlers;