diff --git a/src/declarative/qml/v8/qv8qobjectwrapper.cpp b/src/declarative/qml/v8/qv8qobjectwrapper.cpp index 348b6c061d..5b5c8be435 100644 --- a/src/declarative/qml/v8/qv8qobjectwrapper.cpp +++ b/src/declarative/qml/v8/qv8qobjectwrapper.cpp @@ -120,6 +120,17 @@ public: }; namespace { + +template +class MaxSizeOf5 { + template + struct SMax { + static const size_t Size = sizeof(Z) > sizeof(X) ? sizeof(Z) : sizeof(X); + }; +public: + static const size_t Size = SMax > > >::Size; +}; + struct MetaCallArgument { inline MetaCallArgument(); inline ~MetaCallArgument(); @@ -141,7 +152,12 @@ private: bool boolValue; QObject *qobjectPtr; - char allocData[sizeof(QVariant)]; + char allocData[MaxSizeOf5, + QJSValue, + QDeclarativeV8Handle>::Size]; + qint64 q_for_alignment; }; // Pointers to allocData