diff --git a/src/apps/debuganalyzer/gui/table/AbstractTable.cpp b/src/apps/debuganalyzer/gui/table/AbstractTable.cpp index c548a65827..d4a2447fef 100644 --- a/src/apps/debuganalyzer/gui/table/AbstractTable.cpp +++ b/src/apps/debuganalyzer/gui/table/AbstractTable.cpp @@ -109,7 +109,7 @@ AbstractTable::AbstractTable(const char* name, uint32 flags, border_style borderStyle, bool showHorizontalScrollbar) : BColumnListView(name, flags, borderStyle, showHorizontalScrollbar), - fColumns(20, true) + fColumns(20, false) { } diff --git a/src/apps/debuganalyzer/gui/table/Table.cpp b/src/apps/debuganalyzer/gui/table/Table.cpp index 059d5d18bf..fb17d10345 100644 --- a/src/apps/debuganalyzer/gui/table/Table.cpp +++ b/src/apps/debuganalyzer/gui/table/Table.cpp @@ -402,9 +402,6 @@ Table::Table(TableModel* model, const char* name, uint32 flags, Table::~Table() { - for (int32 i = CountColumns() - 1; i >= 0; i--) - RemoveColumn(ColumnAt(i)); - // rows are deleted by the BColumnListView destructor automatically } diff --git a/src/apps/debuganalyzer/gui/table/TreeTable.cpp b/src/apps/debuganalyzer/gui/table/TreeTable.cpp index 7c4eaaa1aa..4a75e48f5c 100644 --- a/src/apps/debuganalyzer/gui/table/TreeTable.cpp +++ b/src/apps/debuganalyzer/gui/table/TreeTable.cpp @@ -688,6 +688,7 @@ TreeTable::TreeTable(TreeTableModel* model, const char* name, uint32 flags, : AbstractTable(name, flags, borderStyle, showHorizontalScrollbar), fModel(NULL), + fToolTipProvider(NULL), fRootNode(NULL), fSelectionModel(this), fIgnoreSelectionChange(0) @@ -699,9 +700,6 @@ TreeTable::TreeTable(TreeTableModel* model, const char* name, uint32 flags, TreeTable::~TreeTable() { SetTreeTableModel(NULL); - - for (int32 i = CountColumns() - 1; i >= 0; i--) - RemoveColumn(ColumnAt(i)); } diff --git a/src/apps/debugger/Debugger.cpp b/src/apps/debugger/Debugger.cpp index 2519781402..9f05d45f0a 100644 --- a/src/apps/debugger/Debugger.cpp +++ b/src/apps/debugger/Debugger.cpp @@ -433,8 +433,7 @@ Debugger::MessageReceived(BMessage* message) status_t error = interface->StartTeamDebugger(options); if (error != B_OK) { // TODO: notify user. - } else - uiReference.Detach(); + } break; } case MSG_START_NEW_TEAM: @@ -605,7 +604,6 @@ Debugger::_StartNewTeam(TargetHostInterface* interface, const char* path, status_t error = interface->StartTeamDebugger(options); if (error == B_OK) { deleter.Detach(); - uiReference.Detach(); } return error; @@ -624,11 +622,7 @@ Debugger::_HandleOptions(const Options& options) BReference uiReference(debuggerOptions.userInterface, true); TargetHostInterface* hostInterface = TargetHostInterfaceRoster::Default()->ActiveInterfaceAt(0); - status_t error = hostInterface->StartTeamDebugger(debuggerOptions); - if (error == B_OK) - uiReference.Detach(); - - return error; + return hostInterface->StartTeamDebugger(debuggerOptions); } diff --git a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp index a6e50afdc9..9d7bc96a2f 100644 --- a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp +++ b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp @@ -138,6 +138,7 @@ GraphicalUserInterface::~GraphicalUserInterface() { delete fTeamWindowMessenger; delete fFilePanel; + delete fFilePanelHandler; } diff --git a/src/apps/debugger/user_interface/gui/team_window/SourceView.cpp b/src/apps/debugger/user_interface/gui/team_window/SourceView.cpp index 2d964fbf49..4cb2317e9c 100644 --- a/src/apps/debugger/user_interface/gui/team_window/SourceView.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/SourceView.cpp @@ -2034,6 +2034,7 @@ SourceView::SourceView(Team* team, Listener* listener) fStackTrace(NULL), fStackFrame(NULL), fSourceCode(NULL), + fMarkerManager(NULL), fMarkerView(NULL), fTextView(NULL), fListener(listener), @@ -2052,6 +2053,8 @@ SourceView::~SourceView() SetStackFrame(NULL); SetStackTrace(NULL, NULL); SetSourceCode(NULL); + + delete fMarkerManager; } diff --git a/src/apps/debugger/user_interface/gui/value/ValueHandlerRoster.cpp b/src/apps/debugger/user_interface/gui/value/ValueHandlerRoster.cpp index fbd89be54e..461e4c6fcf 100644 --- a/src/apps/debugger/user_interface/gui/value/ValueHandlerRoster.cpp +++ b/src/apps/debugger/user_interface/gui/value/ValueHandlerRoster.cpp @@ -24,13 +24,16 @@ ValueHandlerRoster::ValueHandlerRoster() : - fLock("value handler roster") + fLock("value handler roster"), + fValueHandlers(20, false) { } ValueHandlerRoster::~ValueHandlerRoster() { + for(int32 i = 0; ValueHandler* handler = fValueHandlers.ItemAt(i); i++) + handler->ReleaseReference(); } /*static*/ ValueHandlerRoster* diff --git a/src/kits/debugger/debug_info/GlobalTypeLookup.cpp b/src/kits/debugger/debug_info/GlobalTypeLookup.cpp index e9d83fc883..509f65ed47 100644 --- a/src/kits/debugger/debug_info/GlobalTypeLookup.cpp +++ b/src/kits/debugger/debug_info/GlobalTypeLookup.cpp @@ -114,6 +114,9 @@ GlobalTypeCache::~GlobalTypeCache() entry = nextEntry; } } + + delete fTypesByName; + delete fTypesByID; } diff --git a/src/kits/debugger/debug_info/ImageDebugLoadingStateHandlerRoster.cpp b/src/kits/debugger/debug_info/ImageDebugLoadingStateHandlerRoster.cpp index 8745d218cf..26fa2329e6 100644 --- a/src/kits/debugger/debug_info/ImageDebugLoadingStateHandlerRoster.cpp +++ b/src/kits/debugger/debug_info/ImageDebugLoadingStateHandlerRoster.cpp @@ -23,13 +23,18 @@ ImageDebugLoadingStateHandlerRoster::ImageDebugLoadingStateHandlerRoster() : - fLock("type handler roster") + fLock("loading state handler roster"), + fStateHandlers(20, false) { } ImageDebugLoadingStateHandlerRoster::~ImageDebugLoadingStateHandlerRoster() { + for (int32 i = 0; ImageDebugLoadingStateHandler* handler + = fStateHandlers.ItemAt(i); i++) { + handler->ReleaseReference(); + } } diff --git a/src/kits/debugger/target_host_interface/TargetHostInterfaceRoster.cpp b/src/kits/debugger/target_host_interface/TargetHostInterfaceRoster.cpp index 777cf1003e..6851fa635a 100644 --- a/src/kits/debugger/target_host_interface/TargetHostInterfaceRoster.cpp +++ b/src/kits/debugger/target_host_interface/TargetHostInterfaceRoster.cpp @@ -32,6 +32,16 @@ TargetHostInterfaceRoster::TargetHostInterfaceRoster() TargetHostInterfaceRoster::~TargetHostInterfaceRoster() { + for (int32 i = 0; TargetHostInterfaceInfo* info + = fInterfaceInfos.ItemAt(i); i++) { + info->ReleaseReference(); + } + + for (int32 i = 0; TargetHostInterface* interface + = fActiveInterfaces.ItemAt(i); i++) { + if (interface->Lock()) + interface->Quit(); + } } @@ -185,6 +195,7 @@ TargetHostInterfaceRoster::TargetHostInterfaceQuit( { AutoLocker locker(this); fActiveInterfaces.RemoveItem(interface); + } diff --git a/src/kits/debugger/target_host_interface/network/NetworkTargetHostInterfaceInfo.cpp b/src/kits/debugger/target_host_interface/network/NetworkTargetHostInterfaceInfo.cpp index 4dabc55161..31dc3df85c 100644 --- a/src/kits/debugger/target_host_interface/network/NetworkTargetHostInterfaceInfo.cpp +++ b/src/kits/debugger/target_host_interface/network/NetworkTargetHostInterfaceInfo.cpp @@ -26,7 +26,8 @@ NetworkTargetHostInterfaceInfo::NetworkTargetHostInterfaceInfo() NetworkTargetHostInterfaceInfo::~NetworkTargetHostInterfaceInfo() { - delete fDescription; + if (fDescription != NULL) + fDescription->ReleaseReference(); } @@ -39,21 +40,20 @@ NetworkTargetHostInterfaceInfo::Init() Setting* setting = new(std::nothrow) StringSettingImpl(kHostnameSetting, "Hostname", ""); + BReference settingsReference(setting, true); if (setting == NULL) return B_NO_MEMORY; - ObjectDeleter settingDeleter(setting); if (!fDescription->AddSetting(setting)) return B_NO_MEMORY; - settingDeleter.Detach(); setting = new(std::nothrow) BoundedSettingImpl(kPortSetting, "Port", (uint16)1, (uint16)65535, (uint16)8305); if (setting == NULL) return B_NO_MEMORY; - if (!fDescription->AddSetting(setting)) { - delete setting; + + settingsReference.SetTo(setting, true); + if (!fDescription->AddSetting(setting)) return B_NO_MEMORY; - } return B_OK; } diff --git a/src/kits/debugger/value/TypeHandlerRoster.cpp b/src/kits/debugger/value/TypeHandlerRoster.cpp index 985d03cb0d..4924d33fe2 100644 --- a/src/kits/debugger/value/TypeHandlerRoster.cpp +++ b/src/kits/debugger/value/TypeHandlerRoster.cpp @@ -73,6 +73,8 @@ TypeHandlerRoster::TypeHandlerRoster() TypeHandlerRoster::~TypeHandlerRoster() { + for (int32 i = 0; TypeHandler* handler = fTypeHandlers.ItemAt(i); i++) + handler->ReleaseReference(); } /*static*/ TypeHandlerRoster* diff --git a/src/kits/debugger/value/ValueNodeContainer.cpp b/src/kits/debugger/value/ValueNodeContainer.cpp index 1fbb4e198e..4528540ecb 100644 --- a/src/kits/debugger/value/ValueNodeContainer.cpp +++ b/src/kits/debugger/value/ValueNodeContainer.cpp @@ -16,7 +16,9 @@ ValueNodeContainer::ValueNodeContainer() : - fLock("value node container") + fLock("value node container"), + fChildren(20, false), + fListeners(20, false) { } @@ -24,6 +26,7 @@ ValueNodeContainer::ValueNodeContainer() ValueNodeContainer::~ValueNodeContainer() { RemoveAllChildren(); + fListeners.MakeEmpty(); }