From 9de85d233bb62e6bbfc28d6efe35966752e61b17 Mon Sep 17 00:00:00 2001 From: martin Date: Wed, 12 Dec 2018 13:46:01 +0000 Subject: [PATCH] LazDebuggerFpLLDB: Fix potential dangling pointer in Locals eval. git-svn-id: trunk@59802 - --- .../lazdebuggerfplldb/fplldbdebugger.pas | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/components/lazdebuggers/lazdebuggerfplldb/fplldbdebugger.pas b/components/lazdebuggers/lazdebuggerfplldb/fplldbdebugger.pas index bd97710bdd..91370cb6d1 100644 --- a/components/lazdebuggers/lazdebuggerfplldb/fplldbdebugger.pas +++ b/components/lazdebuggers/lazdebuggerfplldb/fplldbdebugger.pas @@ -189,6 +189,7 @@ type private FOwner: TFPLldbLocals; FLocals: TLocals; + procedure DoLocalsFreed(Sender: TObject); protected procedure DoExecute; override; public @@ -260,9 +261,17 @@ type { TFpLldbDebuggerCommandLocals } +procedure TFpLldbDebuggerCommandLocals.DoLocalsFreed(Sender: TObject); +begin + FLocals := nil; +end; + procedure TFpLldbDebuggerCommandLocals.DoExecute; begin - FOwner.ProcessLocals(FLocals); + if FLocals <> nil then begin + FOwner.ProcessLocals(FLocals); + FLocals.RemoveFreeNotification(@DoLocalsFreed); + end; Finished; end; @@ -271,6 +280,7 @@ begin inherited Create(AOwner.FpDebugger); FOwner := AOwner; FLocals := ALocals; + FLocals.AddFreeNotification(@DoLocalsFreed); ////// Priority := 1; // before watches end;