Hi all,
When building Qt 5 on big endian host (PPC) I've found moc breaking on Qt
classes containing Q_PLUGIN_METADATA with
ASSERT: "idx >= 0 && idx < s" in file
../../../include/QtCore/../../src/corelib/tools/qvarlengtharray.h, line 111
It turned out to be a fault of QJsonPrivate::Parser::parseObject which has
different code for handling of big endian and little endian cases:
if (parsedObject.offsets.size()) {
int tableSize = parsedObject.offsets.size()*sizeof(uint);
table = reserveSpace(tableSize);
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
memcpy(data + table, parsedObject.offsets.constData(), tableSize);
#else
offset *o = (offset *)(data + table);
for (int i = 0; i < tableSize; ++i)
o[i] = parsedObject.offsets[i];
#endif
}
Could anyone explain why memcpy cannot be used for big endian case here?
--
Regards,
Konstantin
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development