From 8965200384936ffb2cc5f5d4fe3c7705bf286413 Mon Sep 17 00:00:00 2001 From: Yihe Li Date: Mon, 2 Jun 2025 14:15:30 +0800 Subject: [PATCH] Handle JSON parse error Signed-off-by: Yihe Li --- launcher/BaseInstance.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/launcher/BaseInstance.cpp b/launcher/BaseInstance.cpp index aa7812649..096052a45 100644 --- a/launcher/BaseInstance.cpp +++ b/launcher/BaseInstance.cpp @@ -423,15 +423,21 @@ void BaseInstance::setShortcuts(const QList& shortcuts) QList BaseInstance::shortcuts() const { auto data = m_settings->get("shortcuts").toString().toUtf8(); - auto document = QJsonDocument::fromJson(data); + QJsonParseError parseError; + auto document = QJsonDocument::fromJson(data, &parseError); + if (parseError.error != QJsonParseError::NoError || !document.isArray()) + return {}; + QList results; for (const auto& elem : document.array()) { + if (!elem.isObject()) + continue; auto dict = elem.toObject(); if (!dict.contains("name") || !dict.contains("filePath") || !dict.contains("target")) - return {}; + continue; int value = dict["target"].toInt(-1); if (!dict["name"].isString() || !dict["filePath"].isString() || value < 0 || value >= 3) - return {}; + continue; QString shortcutName = dict["name"].toString(); QString filePath = dict["filePath"].toString();