Fix crash with invalid quilt mod info

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
(cherry picked from commit 0626e354a026f9a2a35a4d6e28a0af105cb22986)
This commit is contained in:
Trial97 2025-03-12 00:01:45 +02:00 committed by github-actions[bot]
parent 5de91076ea
commit 190d17acd3

View File

@ -293,13 +293,13 @@ ModDetails ReadFabricModInfo(QByteArray contents)
// https://github.com/QuiltMC/rfcs/blob/master/specification/0002-quilt.mod.json.md
ModDetails ReadQuiltModInfo(QByteArray contents)
{
ModDetails details;
try {
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError);
auto object = Json::requireObject(jsonDoc, "quilt.mod.json");
auto schemaVersion = Json::ensureInteger(object.value("schema_version"), 0, "Quilt schema_version");
ModDetails details;
// https://github.com/QuiltMC/rfcs/blob/be6ba280d785395fefa90a43db48e5bfc1d15eb4/specification/0002-quilt.mod.json.md
if (schemaVersion == 1) {
auto modInfo = Json::requireObject(object.value("quilt_loader"), "Quilt mod info");
@ -342,8 +342,8 @@ ModDetails ReadQuiltModInfo(QByteArray contents)
details.licenses.append(ModLicense(license.toString()));
} else if (license.isObject()) {
auto obj = license.toObject();
details.licenses.append(ModLicense(obj.value("name").toString(), obj.value("id").toString(), obj.value("url").toString(),
obj.value("description").toString()));
details.licenses.append(ModLicense(obj.value("name").toString(), obj.value("id").toString(),
obj.value("url").toString(), obj.value("description").toString()));
}
}
@ -374,6 +374,10 @@ ModDetails ReadQuiltModInfo(QByteArray contents)
}
}
}
} catch (const Exception& e) {
qWarning() << "Unable to parse mof info:" << e.cause();
}
return details;
}