Fixed QJsonDocument::fromBinaryData on big endian platforms.
authorKonstantin Tokarev <annulen@yandex.ru>
Sun, 23 Sep 2012 21:34:01 +0000 (01:34 +0400)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Mon, 24 Sep 2012 19:27:51 +0000 (21:27 +0200)
Change-Id: I1786b6222867c8780f6768e5220e7ddff952b28e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
src/corelib/json/qjson.cpp
src/corelib/json/qjson_p.h

index 98be592..100a8dc 100644 (file)
@@ -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:
index ff57dad..23827a1 100644 (file)
@@ -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);
     }