aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4compiler.cpp
diff options
context:
space:
mode:
authorRolf Eike Beer <eb@emlix.com>2018-09-05 13:47:08 +0200
committerRolf Eike Beer <eb@emlix.com>2018-09-07 14:13:15 +0000
commit1a6b2250906254c2284907ad2da632643e98acc4 (patch)
tree24041aaafdcd88c6b048f46a01e512d26bfa945f /src/qml/compiler/qv4compiler.cpp
parent59b49489f00b672e78c0cf76870a68219d35dfac (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.cpp6
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;