diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2016-07-14 15:43:16 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2016-07-15 06:26:28 +0000 |
commit | d5bda1e25ea8866851cec109ff630cad44804e53 (patch) | |
tree | 796ef2f0da782c0c1b02202818bcce1b5ea781b9 /src/qml/compiler/qv4compiler.cpp | |
parent | afa665317a2eb137aa5e4586c5a5ad093b33b279 (diff) |
More endianness fixes
It's necessary to consistently use LEUInt32 when writing the offset tables, as
that's also what we're using when reading from them.
Change-Id: Idbef310bd6b28a0e6b6b0dff516e0ef178f04999
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4compiler.cpp')
-rw-r--r-- | src/qml/compiler/qv4compiler.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/qml/compiler/qv4compiler.cpp b/src/qml/compiler/qv4compiler.cpp index 6b9f42709f..8c99fdf0ca 100644 --- a/src/qml/compiler/qv4compiler.cpp +++ b/src/qml/compiler/qv4compiler.cpp @@ -75,13 +75,13 @@ void QV4::Compiler::StringTableGenerator::clear() void QV4::Compiler::StringTableGenerator::serialize(CompiledData::Unit *unit) { char *dataStart = reinterpret_cast<char *>(unit); - uint *stringTable = reinterpret_cast<uint *>(dataStart + unit->offsetToStringTable); + CompiledData::LEUInt32 *stringTable = reinterpret_cast<CompiledData::LEUInt32 *>(dataStart + unit->offsetToStringTable); char *stringData = dataStart + unit->offsetToStringTable + unit->stringTableSize * sizeof(uint); for (int i = 0; i < strings.size(); ++i) { stringTable[i] = stringData - dataStart; const QString &qstr = strings.at(i); - QV4::CompiledData::String *s = (QV4::CompiledData::String*)(stringData); + QV4::CompiledData::String *s = reinterpret_cast<QV4::CompiledData::String *>(stringData); s->size = qstr.length(); #if Q_BYTE_ORDER == Q_LITTLE_ENDIAN memcpy(s + 1, qstr.constData(), qstr.length()*sizeof(ushort)); @@ -266,9 +266,11 @@ QV4::CompiledData::Unit *QV4::Compiler::JSUnitGenerator::generateUnit(GeneratorO unit->offsetToObjects = 0; unit->indexOfRootObject = 0; - uint *functionTable = (uint *)(data + unit->offsetToFunctionTable); - for (int i = 0; i < irModule->functions.size(); ++i) - functionTable[i] = functionOffsets.value(irModule->functions.at(i)); + { + CompiledData::LEUInt32 *functionTable = reinterpret_cast<CompiledData::LEUInt32 *>(data + unit->offsetToFunctionTable); + for (int i = 0; i < irModule->functions.size(); ++i) + functionTable[i] = functionOffsets.value(irModule->functions.at(i)); + } char *f = data + unitSize; for (int i = 0; i < irModule->functions.size(); ++i) { @@ -295,7 +297,7 @@ QV4::CompiledData::Unit *QV4::Compiler::JSUnitGenerator::generateUnit(GeneratorO memcpy(jsClassDataPtrToWrite, jsClassData.constData(), jsClassData.size()); // write js classes and js class lookup table - uint *jsClassOffsetTable = (uint*)(data + unit->offsetToJSClassTable); + CompiledData::LEUInt32 *jsClassOffsetTable = reinterpret_cast<CompiledData::LEUInt32 *>(data + unit->offsetToJSClassTable); for (int i = 0; i < jsClassOffsets.count(); ++i) jsClassOffsetTable[i] = jsClassDataPtrToWrite - data + jsClassOffsets.at(i); } |