From c55187d6641f95f7e1315752046dac86b3010403 Mon Sep 17 00:00:00 2001 From: Mircea TheHonestCTO Date: Mon, 1 Sep 2025 04:07:33 +0200 Subject: [PATCH] fix ASAN detected leaks and heap-use-after-free error --- launcher/aboutProject/aboutproject_moc.cpp | 4 +++- launcher/aboutProject/aboutproject_moc.h | 3 ++- launcher/firstLaunch/firstlaunch_moc.cpp | 4 +++- launcher/firstLaunch/firstlaunch_moc.h | 3 ++- launcher/modManager/cdownloadmanager_moc.cpp | 4 +++- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/launcher/aboutProject/aboutproject_moc.cpp b/launcher/aboutProject/aboutproject_moc.cpp index a6db34c8c..aeee4d16c 100644 --- a/launcher/aboutProject/aboutproject_moc.cpp +++ b/launcher/aboutProject/aboutproject_moc.cpp @@ -33,7 +33,7 @@ void AboutProjectView::hideAndStretchWidget(QGridLayout * layout, QWidget * toHi AboutProjectView::AboutProjectView(QWidget * parent) : QWidget(parent) - , ui(new Ui::AboutProjectView) + , ui(std::make_unique()) { ui->setupUi(this); @@ -56,6 +56,8 @@ AboutProjectView::AboutProjectView(QWidget * parent) #endif } +AboutProjectView::~AboutProjectView() = default; + void AboutProjectView::changeEvent(QEvent *event) { if(event->type() == QEvent::LanguageChange) diff --git a/launcher/aboutProject/aboutproject_moc.h b/launcher/aboutProject/aboutproject_moc.h index 916dcf72c..dda196905 100644 --- a/launcher/aboutProject/aboutproject_moc.h +++ b/launcher/aboutProject/aboutproject_moc.h @@ -28,6 +28,7 @@ class AboutProjectView : public QWidget public: explicit AboutProjectView(QWidget * parent = nullptr); + ~AboutProjectView() override; private slots: void on_updatesButton_clicked(); @@ -49,5 +50,5 @@ private slots: void on_openConfigDir_clicked(); private: - Ui::AboutProjectView * ui; + std::unique_ptr ui; }; diff --git a/launcher/firstLaunch/firstlaunch_moc.cpp b/launcher/firstLaunch/firstlaunch_moc.cpp index f4c209721..da49b4cee 100644 --- a/launcher/firstLaunch/firstlaunch_moc.cpp +++ b/launcher/firstLaunch/firstlaunch_moc.cpp @@ -41,7 +41,7 @@ extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_heroesDataUpda FirstLaunchView::FirstLaunchView(QWidget * parent) : QWidget(parent) - , ui(new Ui::FirstLaunchView) + , ui(std::make_unique()) { ui->setupUi(this); @@ -65,6 +65,8 @@ FirstLaunchView::FirstLaunchView(QWidget * parent) #endif } +FirstLaunchView::~FirstLaunchView() = default; + void FirstLaunchView::on_buttonTabLanguage_clicked() { activateTabLanguage(); diff --git a/launcher/firstLaunch/firstlaunch_moc.h b/launcher/firstLaunch/firstlaunch_moc.h index 3dbb469c8..32acd81ac 100644 --- a/launcher/firstLaunch/firstlaunch_moc.h +++ b/launcher/firstLaunch/firstlaunch_moc.h @@ -58,6 +58,7 @@ class FirstLaunchView : public QWidget public: explicit FirstLaunchView(QWidget * parent = nullptr); + ~FirstLaunchView() override; // Tab Heroes III Data bool heroesDataUpdate(); @@ -89,5 +90,5 @@ private slots: void on_pushButtonGithub_clicked(); private: - Ui::FirstLaunchView * ui; + std::unique_ptr ui; }; diff --git a/launcher/modManager/cdownloadmanager_moc.cpp b/launcher/modManager/cdownloadmanager_moc.cpp index a48415c55..b181ffc68 100644 --- a/launcher/modManager/cdownloadmanager_moc.cpp +++ b/launcher/modManager/cdownloadmanager_moc.cpp @@ -73,17 +73,19 @@ void CDownloadManager::downloadFinished(QNetworkReply * reply) if(possibleRedirectUrl.isValid()) { QString filename; + qint64 totalSize = 0; for(int i = 0; i< currentDownloads.size(); ++i) { if(currentDownloads[i].file == file.file) { filename = currentDownloads[i].filename; + totalSize = currentDownloads[i].totalSize; currentDownloads.removeAt(i); break; } } - downloadFile(qurl, filename, file.totalSize); + downloadFile(qurl, filename, totalSize); return; }