diff options
author | Rolf Eike Beer <eb@emlix.com> | 2018-09-05 13:47:08 +0200 |
---|---|---|
committer | Rolf Eike Beer <eb@emlix.com> | 2018-09-07 14:13:15 +0000 |
commit | 1a6b2250906254c2284907ad2da632643e98acc4 (patch) | |
tree | 24041aaafdcd88c6b048f46a01e512d26bfa945f /src/qml/compiler/qv4compiler.cpp | |
parent | 59b49489f00b672e78c0cf76870a68219d35dfac (diff) |
avoid duplicate offset calculations when building string table
Change-Id: I5bfc46b9d9cdc3bde35f60de75cb8e9e51b0b0ec
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4compiler.cpp')
-rw-r--r-- | src/qml/compiler/qv4compiler.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/qml/compiler/qv4compiler.cpp b/src/qml/compiler/qv4compiler.cpp index b6e5504c24..bbce317b8e 100644 --- a/src/qml/compiler/qv4compiler.cpp +++ b/src/qml/compiler/qv4compiler.cpp @@ -92,7 +92,7 @@ void QV4::Compiler::StringTableGenerator::serialize(CompiledData::Unit *unit) { char *dataStart = reinterpret_cast<char *>(unit); quint32_le *stringTable = reinterpret_cast<quint32_le *>(dataStart + unit->offsetToStringTable); - char *stringData = dataStart + unit->offsetToStringTable + unit->stringTableSize * sizeof(uint); + char *stringData = reinterpret_cast<char *>(stringTable) + unit->stringTableSize * sizeof(uint); for (int i = backingUnitTableSize ; i < strings.size(); ++i) { const int index = i - backingUnitTableSize; stringTable[index] = stringData - dataStart; @@ -105,10 +105,10 @@ void QV4::Compiler::StringTableGenerator::serialize(CompiledData::Unit *unit) s->offsetOn32Bit = sizeof(QV4::CompiledData::String); s->offsetOn64Bit = sizeof(QV4::CompiledData::String); #if Q_BYTE_ORDER == Q_LITTLE_ENDIAN - memcpy(s + 1, qstr.constData(), qstr.length()*sizeof(ushort)); + memcpy(s + 1, qstr.constData(), s->size * sizeof(ushort)); #else ushort *uc = reinterpret_cast<ushort *>(s + 1); - for (int i = 0; i < qstr.length(); ++i) + for (int i = 0; i < s->size; ++i) uc[i] = qToLittleEndian<ushort>(qstr.at(i).unicode()); #endif reinterpret_cast<ushort *>(s + 1)[s->size] = 0; |