Debugger, IDE: prevent dangling pointer in Source-Hint watch-eval.

(cherry picked from commit 4d3adb3870)
This commit is contained in:
Martin 2024-01-18 17:00:25 +01:00
parent 4c41d70ddf
commit af2489f6ff

View File

@ -193,6 +193,7 @@ type
var Result: TStartNewInstanceResult; var outSourceWindowHandle: HWND);
procedure LazInstancesGetOpenedProjectFileName(var outProjectFileName: string);
procedure OnHintWatchValidityChanged(Sender: TObject);
procedure HintWatchFreed(Sender: TObject);
procedure DlgDebugInfoHelpRequested(Sender: TObject; AModalResult: TModalResult; var ACanClose: Boolean);
public
@ -11515,6 +11516,11 @@ begin
CodeExplorerView.CurrentCodeBufferChanged;
end;
procedure TMainIDE.HintWatchFreed(Sender: TObject);
begin
FHintWatchData.WatchValue := nil;
end;
procedure TMainIDE.OnHintWatchValidityChanged(Sender: TObject);
var
p: SizeInt;
@ -11678,6 +11684,7 @@ begin
st := CStack.CurrentIndex;
FHintWatchData.WatchValue := aWatch.Values[tid, st] as TCurrentWatchValue;
FHintWatchData.WatchValue.OnValidityChanged := @OnHintWatchValidityChanged;
FHintWatchData.WatchValue.AddFreeNotification(@HintWatchFreed);
FHintWatchData.WatchValue.Value;
OnHintWatchValidityChanged(FHintWatchData.WatchValue);
exit;