diff options
-rw-r--r-- | src/qml/qml/qqmlcompiler.cpp | 6 | ||||
-rw-r--r-- | src/qml/qml/qqmlinstruction_p.h | 11 | ||||
-rw-r--r-- | src/qml/qml/qqmlvme.cpp | 4 | ||||
-rw-r--r-- | tests/auto/qml/qqmlinstruction/tst_qqmlinstruction.cpp | 7 |
4 files changed, 7 insertions, 21 deletions
diff --git a/src/qml/qml/qqmlcompiler.cpp b/src/qml/qml/qqmlcompiler.cpp index 0ba90aad27..fdbbed0bf8 100644 --- a/src/qml/qml/qqmlcompiler.cpp +++ b/src/qml/qml/qqmlcompiler.cpp @@ -583,8 +583,7 @@ void QQmlCompiler::genLiteralAssignment(QQmlScript::Property *prop, Instruction::StoreTime instr; QTime time = QQmlStringConverters::timeFromString(v->value.asString()); instr.propertyIndex = prop->index; - Q_ASSERT(sizeof(instr.time) == sizeof(QTime)); - ::memcpy(&instr.time, &time, sizeof(QTime)); + instr.time = time.msecsSinceStartOfDay(); output->addInstruction(instr); } break; @@ -595,8 +594,7 @@ void QQmlCompiler::genLiteralAssignment(QQmlScript::Property *prop, QTime time = dateTime.time(); instr.propertyIndex = prop->index; instr.date = dateTime.date().toJulianDay(); - Q_ASSERT(sizeof(instr.time) == sizeof(QTime)); - ::memcpy(&instr.time, &time, sizeof(QTime)); + instr.time = time.msecsSinceStartOfDay(); output->addInstruction(instr); } break; diff --git a/src/qml/qml/qqmlinstruction_p.h b/src/qml/qml/qqmlinstruction_p.h index 01b6fa41a4..150ee8df19 100644 --- a/src/qml/qml/qqmlinstruction_p.h +++ b/src/qml/qml/qqmlinstruction_p.h @@ -345,18 +345,13 @@ union QQmlInstruction struct instr_storeTime { QML_INSTR_HEADER int propertyIndex; - struct QTime { - int mds; -#if defined(Q_OS_WINCE) - int startTick; -#endif - } time; + int time; // QTime::fromMSecsSinceStartOfDay }; struct instr_storeDateTime { QML_INSTR_HEADER int propertyIndex; int date; - instr_storeTime::QTime time; + int time; }; struct instr_storeRect { QML_INSTR_HEADER @@ -540,7 +535,7 @@ struct QQmlInstructionMeta { enum { Size = QML_INSTR_SIZE(I, FMT) }; \ typedef QQmlInstruction::instr_##FMT DataType; \ static const DataType &data(const QQmlInstruction &instr) { return instr.FMT; } \ - static void setData(QQmlInstruction &instr, const DataType &v) { instr.FMT = v; } \ + static void setData(QQmlInstruction &instr, const DataType &v) { memcpy(&instr.FMT, &v, Size); } \ }; FOR_EACH_QML_INSTR(QML_INSTR_META_TEMPLATE); #undef QML_INSTR_META_TEMPLATE diff --git a/src/qml/qml/qqmlvme.cpp b/src/qml/qml/qqmlvme.cpp index 7c27d77b2e..983136a846 100644 --- a/src/qml/qml/qqmlvme.cpp +++ b/src/qml/qml/qqmlvme.cpp @@ -400,8 +400,8 @@ QObject *QQmlVME::run(QList<QQmlError> *errors, QML_STORE_PROVIDER_VALUE(StoreColor, QMetaType::QColor, instr.value); QML_STORE_VALUE(StoreDate, QDate, QDate::fromJulianDay(instr.value)); QML_STORE_VALUE(StoreDateTime, QDateTime, - QDateTime(QDate::fromJulianDay(instr.date), *(QTime *)&instr.time)); - QML_STORE_POINTER(StoreTime, (QTime *)&instr.time); + QDateTime(QDate::fromJulianDay(instr.date), QTime::fromMSecsSinceStartOfDay(instr.time))); + QML_STORE_VALUE(StoreTime, QTime, QTime::fromMSecsSinceStartOfDay(instr.time)); QML_STORE_POINTER(StorePoint, (QPoint *)&instr.point); QML_STORE_POINTER(StorePointF, (QPointF *)&instr.point); QML_STORE_POINTER(StoreSize, (QSize *)&instr.size); diff --git a/tests/auto/qml/qqmlinstruction/tst_qqmlinstruction.cpp b/tests/auto/qml/qqmlinstruction/tst_qqmlinstruction.cpp index a119607769..0cd4360e67 100644 --- a/tests/auto/qml/qqmlinstruction/tst_qqmlinstruction.cpp +++ b/tests/auto/qml/qqmlinstruction/tst_qqmlinstruction.cpp @@ -63,7 +63,6 @@ private slots: void rectf(); void vector3d(); void vector4d(); - void time(); }; void tst_qqmlinstruction::dump() @@ -688,12 +687,6 @@ void tst_qqmlinstruction::vector4d() QCOMPARE(vector.w(), (qreal)(float)121.1); } -void tst_qqmlinstruction::time() -{ - QCOMPARE(sizeof(QQmlInstruction::instr_storeTime::QTime), sizeof(QTime)); - QCOMPARE(Q_ALIGNOF(QQmlInstruction::instr_storeTime::QTime), Q_ALIGNOF(QTime)); -} - QTEST_MAIN(tst_qqmlinstruction) #include "tst_qqmlinstruction.moc" |