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:
parent
5de91076ea
commit
190d17acd3
@ -293,13 +293,13 @@ ModDetails ReadFabricModInfo(QByteArray contents)
|
|||||||
// https://github.com/QuiltMC/rfcs/blob/master/specification/0002-quilt.mod.json.md
|
// https://github.com/QuiltMC/rfcs/blob/master/specification/0002-quilt.mod.json.md
|
||||||
ModDetails ReadQuiltModInfo(QByteArray contents)
|
ModDetails ReadQuiltModInfo(QByteArray contents)
|
||||||
{
|
{
|
||||||
|
ModDetails details;
|
||||||
|
try {
|
||||||
QJsonParseError jsonError;
|
QJsonParseError jsonError;
|
||||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError);
|
QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError);
|
||||||
auto object = Json::requireObject(jsonDoc, "quilt.mod.json");
|
auto object = Json::requireObject(jsonDoc, "quilt.mod.json");
|
||||||
auto schemaVersion = Json::ensureInteger(object.value("schema_version"), 0, "Quilt schema_version");
|
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
|
// https://github.com/QuiltMC/rfcs/blob/be6ba280d785395fefa90a43db48e5bfc1d15eb4/specification/0002-quilt.mod.json.md
|
||||||
if (schemaVersion == 1) {
|
if (schemaVersion == 1) {
|
||||||
auto modInfo = Json::requireObject(object.value("quilt_loader"), "Quilt mod info");
|
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()));
|
details.licenses.append(ModLicense(license.toString()));
|
||||||
} else if (license.isObject()) {
|
} else if (license.isObject()) {
|
||||||
auto obj = license.toObject();
|
auto obj = license.toObject();
|
||||||
details.licenses.append(ModLicense(obj.value("name").toString(), obj.value("id").toString(), obj.value("url").toString(),
|
details.licenses.append(ModLicense(obj.value("name").toString(), obj.value("id").toString(),
|
||||||
obj.value("description").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;
|
return details;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user