From 3c3bdedabfe01b1026ff49f9aca4c1f965b7a854 Mon Sep 17 00:00:00 2001 From: balazs Date: Sun, 4 Apr 2021 11:47:40 +0000 Subject: [PATCH] Opkman: Assign nil to download thread to prevent dangling pointers. git-svn-id: trunk@64921 - --- components/onlinepackagemanager/opkman_downloader.pas | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/components/onlinepackagemanager/opkman_downloader.pas b/components/onlinepackagemanager/opkman_downloader.pas index c2458bc3b0..0460ff98a6 100644 --- a/components/onlinepackagemanager/opkman_downloader.pas +++ b/components/onlinepackagemanager/opkman_downloader.pas @@ -158,6 +158,7 @@ type procedure DoOnPackageDownloadCompleted(Sender: TObject); procedure DoOnPackageUpdateProgress(Sender: TObject; AUPackageName, AUPackageURL: String; ACnt, ATotCnt: Integer; AUTyp: Integer; AUErrMsg: String); procedure DoOnPackageUpdateCompleted(Sender: TObject; AUSuccess: Boolean); + procedure DoOnTerminate(Sender: TObject); public constructor Create(const ARemoteRepository: String); destructor Destroy; override; @@ -666,6 +667,7 @@ begin FDownload := TThreadDownload.Create; FDownload.OnJSONProgress := @DoOnJSONProgress; FDownload.OnJSONDownloadCompleted := @DoOnJSONDownloadCompleted; + FDownload.OnTerminate := @DoOnTerminate; FDownload.DownloadJSON(ATimeOut, ASilent); end; @@ -675,6 +677,7 @@ begin FDownload.OnPackageDownloadProgress := @DoOnPackageDownloadProgress; FDownload.OnPackageDownloadError := @DoOnPackageDownloadError; FDownload.OnPackageDownloadCompleted := @DoOnPackageDownloadCompleted; + FDownload.OnTerminate := @DoOnTerminate; FDownload.DownloadPackages(ADownloadTo); end; @@ -686,6 +689,7 @@ begin FDownload.OnPackageDownloadCompleted := @DoOnPackageDownloadCompleted; FDownload.OnPackageUpdateProgress := @DoOnPackageUpdateProgress; FDownload.OnPackageUpdateCompleted := @DoOnPackageUpdateCompleted; + FDownload.OnTerminate := @DoOnTerminate; FDownload.UpdatePackages(ADownloadTo); end; @@ -698,5 +702,11 @@ begin end; end; +procedure TPackageDownloader.DoOnTerminate(Sender: TObject); +begin + FDownload := nil; +end; + + end.