diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-02-20 09:55:41 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-02-20 10:07:18 +0100 |
commit | 6b67a538336112671c3512509c7a0c9031732e37 (patch) | |
tree | cf671af6fef110730f27a48dbeaa444c163c2e7e /src/qml/qml/qqmlobjectcreator.cpp | |
parent | 410f835a40bda737c8933fe630251752fba2ba4f (diff) |
Inline components: do not leak context
Change-Id: Ic738f3ea8f91cf2ffc7fb86ad9f72c0d630b6de8
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlobjectcreator.cpp')
-rw-r--r-- | src/qml/qml/qqmlobjectcreator.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp index 28dd3d4ab4..aff982012d 100644 --- a/src/qml/qml/qqmlobjectcreator.cpp +++ b/src/qml/qml/qqmlobjectcreator.cpp @@ -1264,7 +1264,10 @@ QObject *QQmlObjectCreator::createInstance(int index, QObject *parent, bool isCo ddata->columnNumber = obj->location.column; ddata->setImplicitDestructible(); - if (static_cast<quint32>(index) == /*root object*/0 || ddata->rootObjectInCreation) { + // inline components are root objects, but their index is != 0, so we need + // an additional check + const bool isInlineComponent = obj->flags & QV4::CompiledData::Object::IsInlineComponentRoot; + if (static_cast<quint32>(index) == /*root object*/0 || ddata->rootObjectInCreation || isInlineComponent) { if (ddata->context) { Q_ASSERT(ddata->context != context); Q_ASSERT(ddata->outerContext); |