Check specifically for GarbageAtEnd error

- Out parameter for garbage data\n- Rename parseUntilMalformed to parseUntilGarbage

Signed-off-by: Dylan Schooner <dschooner05@gmail.com>
This commit is contained in:
Dylan Schooner
2025-12-18 15:23:48 -05:00
parent 9c7fe72f9c
commit 51b47050f9
4 changed files with 11 additions and 7 deletions

View File

@@ -101,12 +101,16 @@ QJsonArray requireArray(const QJsonDocument& doc, const QString& what)
return doc.array();
}
QJsonDocument parseUntilMalformed(const QByteArray& json, QJsonParseError* error)
QJsonDocument parseUntilGarbage(const QByteArray& json, QJsonParseError* error, QString* garbage)
{
auto doc = QJsonDocument::fromJson(json, error);
if (error->error != QJsonParseError::NoError) {
QByteArray validJson = json.left(error->offset);
if (error->error == QJsonParseError::GarbageAtEnd) {
qsizetype offset = error->offset;
QByteArray validJson = json.left(offset);
doc = QJsonDocument::fromJson(validJson, error);
if (garbage)
*garbage = json.right(json.size() - offset);
}
return doc;