Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
None
-
5.1.1, 5.2.0 Alpha
-
None
-
Windows 7
Description
There is QList<Node*> textNodeMap in QQuickTextEditPrivate ( qtdeclarative\src\quick\items\qquicktextedit.cpp ):
void QQuickTextEditPrivate::addCurrentTextNodeToRoot(QSGTransformNode *root, QQuickTextNode *node, TextNodeIterator &it, int startPos)
{
node->m_engine->addToSceneGraph(node, QQuickText::Normal, QColor());
it = textNodeMap.insert(it, new TextNode(startPos, node));
++it;
root->appendChildNode(node);
}
So, "textNodeMap" contains pointer to "node". But "node" is child of "root". When we hide the window RootNode "root" is destroing with all its children ( QSGWindowsRenderLoop::hide(QQuickWindow *window) ). And we have invalid pointers inside textNodeMap. After destroing RootNode we should probably clear "textNodeMap" ( i.e., in updatePaintNode(...) ):
if( !oldNode ){
TextNodeIterator nodeIterator = d->textNodeMap.begin();
while (nodeIterator != d->textNodeMap.end())
d->textNodeMap.clear();
}
Attachments
Issue Links
- is required for
-
QTBUG-33863 Issues to be fixed before Qt5.2 RC1 release
- Closed