From 69885cfba0aaa4d095a908ec0072bdcbaebb46d6 Mon Sep 17 00:00:00 2001 From: martin Date: Sun, 27 Oct 2013 13:47:25 +0000 Subject: [PATCH] Debugger: Fix mem leak in disassembler git-svn-id: trunk@43329 - --- debugger/debugger.pp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/debugger/debugger.pp b/debugger/debugger.pp index 6cbe9b9b0c..7984199f66 100644 --- a/debugger/debugger.pp +++ b/debugger/debugger.pp @@ -2101,7 +2101,7 @@ type constructor Create(AIdType: TMapIdType; ADataSize: Cardinal); destructor Destroy; override; // AddRange, may destroy the object - procedure AddRange(const ARange: TDBGDisassemblerEntryRange); + procedure AddRange(const ARange: TDBGDisassemblerEntryRange); // Arange may be freed function GetRangeForAddr(AnAddr: TDbgPtr; IncludeNextAddr: Boolean = False): TDBGDisassemblerEntryRange; property OnDelete: TNotifyEvent read FOnDelete write FOnDelete; property OnMerge: TDBGDisassemblerEntryMapMergeEvent @@ -11008,7 +11008,10 @@ var OldId: TDBGPtr; begin debugln(DBG_DISASSEMBLER, ['INFO: TDBGDisassemblerEntryMap.AddRange ', dbgs(ARange), ' to map with count=', Count ]); - if ARange.Count = 0 then exit; + if ARange.Count = 0 then begin + ARange.Free; + exit; + end; MergeRng := GetRangeForAddr(ARange.RangeStartAddr, True); if MergeRng <> nil then begin