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
+11 -7
View File
@@ -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;