From ddfbd6ade9c609302cf1e24a681bc76bc43ab8c8 Mon Sep 17 00:00:00 2001 From: joost Date: Mon, 1 Sep 2014 16:26:08 +0000 Subject: [PATCH] FpDebugger (pure): Fixed mem-leak bij freeing debug-threads git-svn-id: trunk@46102 - --- components/fpdebug/fpdbgclasses.pp | 38 ++++++++++++++++++------------ 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/components/fpdebug/fpdbgclasses.pp b/components/fpdebug/fpdbgclasses.pp index b1519a29d8..0f8fc14daf 100644 --- a/components/fpdebug/fpdbgclasses.pp +++ b/components/fpdebug/fpdbgclasses.pp @@ -676,23 +676,31 @@ begin end; destructor TDbgProcess.Destroy; -var - Bp: TDbgBreakpoint; - Iterator: TMapIterator; + + procedure FreeItemsInMap(AMap: TMap); + var + AnObject: TObject; + Iterator: TMapIterator; + begin + iterator := TMapIterator.Create(AMap); + try + Iterator.First; + while not Iterator.EOM do + begin + Iterator.GetData(AnObject); + AnObject.Free; + iterator.Next; + end; + finally + Iterator.Free; + end; + end; + begin FProcessID:=0; - iterator := TMapIterator.Create(FBreakMap); - try - Iterator.First; - while not Iterator.EOM do - begin - Iterator.GetData(bp); - Bp.Free; - iterator.Next; - end; - finally - Iterator.Free; - end; + + FreeItemsInMap(FBreakMap); + FreeItemsInMap(FThreadMap); FreeAndNil(FBreakMap); FreeAndNil(FThreadMap);