diff --git a/src/apps/debugger/BreakpointManager.cpp b/src/apps/debugger/BreakpointManager.cpp index 2e93531792..1c653bc6d0 100644 --- a/src/apps/debugger/BreakpointManager.cpp +++ b/src/apps/debugger/BreakpointManager.cpp @@ -26,11 +26,13 @@ BreakpointManager::BreakpointManager(Team* team, fTeam(team), fDebuggerInterface(debuggerInterface) { + fDebuggerInterface->AcquireReference(); } BreakpointManager::~BreakpointManager() { + fDebuggerInterface->ReleaseReference(); } diff --git a/src/apps/debugger/TeamDebugger.cpp b/src/apps/debugger/TeamDebugger.cpp index 09031d0b9c..0525e4f98c 100644 --- a/src/apps/debugger/TeamDebugger.cpp +++ b/src/apps/debugger/TeamDebugger.cpp @@ -160,8 +160,10 @@ TeamDebugger::~TeamDebugger() fTerminating = true; - if (fDebuggerInterface != NULL) + if (fDebuggerInterface != NULL) { fDebuggerInterface->Close(fKillTeamOnQuit); + fDebuggerInterface->ReleaseReference(); + } if (fWorker != NULL) fWorker->ShutDown(); @@ -193,7 +195,6 @@ TeamDebugger::~TeamDebugger() delete fBreakpointManager; delete fMemoryBlockManager; - delete fDebuggerInterface; delete fWorker; delete fTeam; delete fFileManager; diff --git a/src/apps/debugger/ThreadHandler.cpp b/src/apps/debugger/ThreadHandler.cpp index c05c18d46c..f5559b6162 100644 --- a/src/apps/debugger/ThreadHandler.cpp +++ b/src/apps/debugger/ThreadHandler.cpp @@ -54,12 +54,14 @@ ThreadHandler::ThreadHandler(Thread* thread, Worker* worker, fPreviousInstructionPointer(0), fSingleStepping(false) { + fDebuggerInterface->AcquireReference(); } ThreadHandler::~ThreadHandler() { _ClearContinuationState(); + fDebuggerInterface->ReleaseReference(); } diff --git a/src/apps/debugger/debug_info/DebuggerImageDebugInfo.cpp b/src/apps/debugger/debug_info/DebuggerImageDebugInfo.cpp index a9c761c1a9..490d6a6974 100644 --- a/src/apps/debugger/debug_info/DebuggerImageDebugInfo.cpp +++ b/src/apps/debugger/debug_info/DebuggerImageDebugInfo.cpp @@ -24,11 +24,13 @@ DebuggerImageDebugInfo::DebuggerImageDebugInfo(const ImageInfo& imageInfo, fDebuggerInterface(debuggerInterface), fArchitecture(architecture) { + fDebuggerInterface->AcquireReference(); } DebuggerImageDebugInfo::~DebuggerImageDebugInfo() { + fDebuggerInterface->ReleaseReference(); } diff --git a/src/apps/debugger/debug_info/TeamDebugInfo.cpp b/src/apps/debugger/debug_info/TeamDebugInfo.cpp index 95341dde12..6e1d40727e 100644 --- a/src/apps/debugger/debug_info/TeamDebugInfo.cpp +++ b/src/apps/debugger/debug_info/TeamDebugInfo.cpp @@ -262,6 +262,7 @@ TeamDebugInfo::TeamDebugInfo(DebuggerInterface* debuggerInterface, fSourceFiles(NULL), fTypeCache(NULL) { + fDebuggerInterface->AcquireReference(); } @@ -291,6 +292,8 @@ TeamDebugInfo::~TeamDebugInfo() delete fFunctions; } + + fDebuggerInterface->ReleaseReference(); }