diff --git a/src/kits/debugger/debug_info/DwarfImageDebugInfo.cpp b/src/kits/debugger/debug_info/DwarfImageDebugInfo.cpp index 054c9b9579..c38e6b83bb 100644 --- a/src/kits/debugger/debug_info/DwarfImageDebugInfo.cpp +++ b/src/kits/debugger/debug_info/DwarfImageDebugInfo.cpp @@ -267,7 +267,7 @@ struct DwarfImageDebugInfo::TypeNameEntry : TypeNameKey { TypeNameEntry(const BString& name) : TypeNameKey(name), - types(10, false) + types(10, true) { } @@ -362,6 +362,12 @@ DwarfImageDebugInfo::~DwarfImageDebugInfo() fFile->ReleaseReference(); fTypeCache->ReleaseReference(); + TypeNameEntry* entry = fTypeNameTable->Clear(true); + while (entry != NULL) { + TypeNameEntry* next = entry->next; + delete entry; + entry = next; + } delete fTypeNameTable; } diff --git a/src/kits/debugger/dwarf/BaseUnit.cpp b/src/kits/debugger/dwarf/BaseUnit.cpp index 76c561061b..54010dda6f 100644 --- a/src/kits/debugger/dwarf/BaseUnit.cpp +++ b/src/kits/debugger/dwarf/BaseUnit.cpp @@ -29,6 +29,8 @@ BaseUnit::BaseUnit(off_t headerOffset, off_t contentOffset, BaseUnit::~BaseUnit() { + for (int32 i = 0; i < fEntries.Count(); i++) + delete fEntries[i]; } diff --git a/src/kits/debugger/dwarf/CfaRuleSet.cpp b/src/kits/debugger/dwarf/CfaRuleSet.cpp index c88396d6fb..869276e755 100644 --- a/src/kits/debugger/dwarf/CfaRuleSet.cpp +++ b/src/kits/debugger/dwarf/CfaRuleSet.cpp @@ -19,6 +19,12 @@ CfaRuleSet::CfaRuleSet() } +CfaRuleSet::~CfaRuleSet() +{ + delete[] fRegisterRules; +} + + status_t CfaRuleSet::Init(uint32 registerCount) { diff --git a/src/kits/debugger/dwarf/CfaRuleSet.h b/src/kits/debugger/dwarf/CfaRuleSet.h index 11873a49a2..a5c5f78e70 100644 --- a/src/kits/debugger/dwarf/CfaRuleSet.h +++ b/src/kits/debugger/dwarf/CfaRuleSet.h @@ -12,6 +12,7 @@ class CfaRuleSet { public: CfaRuleSet(); + ~CfaRuleSet(); status_t Init(uint32 registerCount); CfaRuleSet* Clone() const; diff --git a/src/kits/debugger/files/FileManager.cpp b/src/kits/debugger/files/FileManager.cpp index fb614f1d97..9615b337ef 100644 --- a/src/kits/debugger/files/FileManager.cpp +++ b/src/kits/debugger/files/FileManager.cpp @@ -124,6 +124,9 @@ public: entry->ReleaseReference(); entry = next; } + + while ((entry = fDeadEntries.RemoveHead()) != NULL) + entry->ReleaseReference(); } status_t Init() @@ -208,6 +211,12 @@ private: } } } + + LocatableDirectory* parent = entry->Parent(); + if (parent != NULL) + parent->RemoveEntry(entry); + + delete entry; } bool _LocateDirectory(LocatableDirectory* directory,