From 4d3adb38701e631edd2079deb84fa0015888e93f Mon Sep 17 00:00:00 2001 From: Martin Date: Thu, 18 Jan 2024 17:00:25 +0100 Subject: [PATCH] Debugger, IDE: prevent dangling pointer in Source-Hint watch-eval. --- ide/main.pp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ide/main.pp b/ide/main.pp index 92eb05361d..09a8635060 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -193,6 +193,7 @@ type procedure LazInstancesStartNewInstance(const aFiles: TStrings; var Result: TStartNewInstanceResult; var outSourceWindowHandle: HWND); procedure LazInstancesGetOpenedProjectFileName(var outProjectFileName: string); + procedure HintWatchFreed(Sender: TObject); procedure HintWatchValidityChanged(Sender: TObject); procedure DlgDebugInfoHelpRequested(Sender: TObject; AModalResult: TModalResult; var ACanClose: Boolean); @@ -11547,6 +11548,11 @@ begin CodeExplorerView.CurrentCodeBufferChanged; end; +procedure TMainIDE.HintWatchFreed(Sender: TObject); +begin + FHintWatchData.WatchValue := nil; +end; + procedure TMainIDE.HintWatchValidityChanged(Sender: TObject); var p: SizeInt; @@ -11709,6 +11715,7 @@ begin if CStack <> nil then st := CStack.CurrentIndex; FHintWatchData.WatchValue := aWatch.Values[tid, st] as TCurrentWatchValue; + FHintWatchData.WatchValue.AddFreeNotification(@HintWatchFreed); FHintWatchData.WatchValue.OnValidityChanged := @HintWatchValidityChanged; FHintWatchData.WatchValue.Value; HintWatchValidityChanged(FHintWatchData.WatchValue);