diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp index 81c561f27..345db807b 100644 --- a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp @@ -172,6 +172,7 @@ bool processMCMeta(DataPack* pack, QByteArray&& raw_data) auto json_doc = Json::parseUntilMalformed(raw_data, &parse_error); if (parse_error.error != QJsonParseError::NoError) { qWarning() << "Failed to parse JSON:" << parse_error.errorString(); + return false; } try { diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index e42342a11..f91194dfe 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -81,16 +81,11 @@ void McClient::parseResponse() // 'resp' should now be the JSON string QJsonParseError parseError; - QJsonDocument doc = QJsonDocument::fromJson(m_resp, &parseError); + QJsonDocument doc = Json::parseUntilMalformed(m_resp, &parseError); if (parseError.error != QJsonParseError::NoError) { - QByteArray validJson = m_resp.left(parseError.offset); - doc = QJsonDocument::fromJson(validJson, &parseError); - - if (parseError.error != QJsonParseError::NoError) { - qDebug() << "Failed to parse JSON:" << parseError.errorString(); - emitFail(parseError.errorString()); - return; - } + qDebug() << "Failed to parse JSON:" << parseError.errorString(); + emitFail(parseError.errorString()); + return; } emitSucceed(doc.object()); }