From 855018ac555125aec32a580ea4c6374e77398bc1 Mon Sep 17 00:00:00 2001 From: Konstantin Tokarev Date: Mon, 24 Sep 2012 01:34:01 +0400 Subject: [PATCH] Fixed QJsonDocument::fromBinaryData on big endian platforms. Change-Id: I1786b6222867c8780f6768e5220e7ddff952b28e Reviewed-by: Lars Knoll --- src/corelib/json/qjson.cpp | 4 ++-- src/corelib/json/qjson_p.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/corelib/json/qjson.cpp b/src/corelib/json/qjson.cpp index 98be592..100a8dc 100644 --- a/src/corelib/json/qjson.cpp +++ b/src/corelib/json/qjson.cpp @@ -278,9 +278,9 @@ int Value::usedStorage(const Base *b) const case QJsonValue::String: { char *d = data(b); if (latinOrIntValue) - s = sizeof(ushort) + *(ushort *)d; + s = sizeof(ushort) + qFromLittleEndian(*(ushort *)d); else - s = sizeof(int) + sizeof(ushort)*(*(int *)d); + s = sizeof(int) + sizeof(ushort) * qFromLittleEndian(*(int *)d); break; } case QJsonValue::Array: diff --git a/src/corelib/json/qjson_p.h b/src/corelib/json/qjson_p.h index ff57dad..23827a1 100644 --- a/src/corelib/json/qjson_p.h +++ b/src/corelib/json/qjson_p.h @@ -590,9 +590,9 @@ public: int size() const { int s = sizeof(Entry); if (value.latinKey) - s += sizeof(ushort) + *(ushort *) ((const char *)this + sizeof(Entry)); + s += sizeof(ushort) + qFromLittleEndian(*(ushort *) ((const char *)this + sizeof(Entry))); else - s += sizeof(uint) + *(int *) ((const char *)this + sizeof(Entry)); + s += sizeof(uint) + qFromLittleEndian(*(int *) ((const char *)this + sizeof(Entry))); return alignedSize(s); } -- 2.7.4