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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user