From e1d3687d64a19d27448b3f8247505daa99261ea1 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Fri, 15 Feb 2013 10:44:54 +0100 Subject: Fix crashes when creating large documents Compact an object in regular intervals when inserting data into it, to avoid the object becoming huge. Compact an object/array before inserting into another array or object. Check that the document doesn't get so big it's overflowing the internal data structures. Task-number: QTBUG-29288 Change-Id: Id39d80dac1e7d5a11f40819f41b4b336bce16947 Reviewed-by: Thiago Macieira --- src/corelib/json/qjson_p.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/corelib/json/qjson_p.h') diff --git a/src/corelib/json/qjson_p.h b/src/corelib/json/qjson_p.h index 81439a00ce..06885ad972 100644 --- a/src/corelib/json/qjson_p.h +++ b/src/corelib/json/qjson_p.h @@ -543,6 +543,9 @@ public: class Value { public: + enum { + MaxSize = (1<<27) - 1 + }; union { uint _dummy; qle_bitfield<0, 3> type; @@ -564,7 +567,7 @@ public: bool isValid(const Base *b) const; - static int requiredStorage(const QJsonValue &v, bool *compressed); + static int requiredStorage(QJsonValue &v, bool *compressed); static uint valueToStore(const QJsonValue &v, uint offset); static void copyData(const QJsonValue &v, char *dest, bool compressed); }; -- cgit v1.2.3