From d9f28c5b2a75012c27af13970a311357e6163d87 Mon Sep 17 00:00:00 2001 From: RedBlackAka <140876408+RedBlackAka@users.noreply.github.com> Date: Tue, 10 Mar 2026 17:01:40 +0100 Subject: [PATCH] Qt: Improve update checker system to prevent downgrades #1749 (#1768) * Qt: Improve update checker system to prevent downgrades * Code cleanup * Return 0 as fallback * Satisfy clang-format --------- Co-authored-by: OpenSauce04 --- src/citra_qt/citra_qt.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/citra_qt/citra_qt.cpp b/src/citra_qt/citra_qt.cpp index cf689ec03..242fab411 100644 --- a/src/citra_qt/citra_qt.cpp +++ b/src/citra_qt/citra_qt.cpp @@ -180,12 +180,21 @@ bool IsPrereleaseBuild() { } #ifdef ENABLE_QT_UPDATE_CHECKER -bool ShouldCheckForPrereleaseUpdates() { +static bool ShouldCheckForPrereleaseUpdates() { const bool update_channel = UISettings::values.update_check_channel.GetValue(); const bool using_prerelease_channel = (update_channel == UISettings::UpdateCheckChannels::PRERELEASE); return (IsPrereleaseBuild() || using_prerelease_channel); } + +static int GetMajorVersion(const std::string& version) { + size_t dot = version.find('.'); + try { + return std::stoi(version.substr(0, dot)); + } catch (...) { + return 0; + } +} #endif GMainWindow::GMainWindow(Core::System& system_) @@ -422,7 +431,11 @@ GMainWindow::GMainWindow(Core::System& system_) UpdateChecker::GetLatestRelease(ShouldCheckForPrereleaseUpdates()); if (latest_release_tag && latest_release_tag.value() != Common::g_build_fullname) { - return QString::fromStdString(latest_release_tag.value()); + const int latest_major_version = GetMajorVersion(latest_release_tag.value()); + const int current_major_version = GetMajorVersion(Common::g_build_fullname); + if (current_major_version <= latest_major_version) { + return QString::fromStdString(latest_release_tag.value()); + } } return QString{}; });