aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2020-09-25 11:49:39 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-09-29 11:20:27 +0000
commit68a916d8ec4ff964bb1310b4065494e9e041499e (patch)
treebe9bed54b9d49a24ab01e052fa9a2eea3f03bebe
parentf2c5b91201bd3df8de9f47fe71a9d0f2f5b76882 (diff)
QQuickMenu: fix contentModel memory leak
Q_Q should not be used in a QObjectPrivate-derivative's constructor, as q will be null at that stage. Instead, add QQuickMenuPrivate::init() and create the contentModel there. Fixes: QTBUG-86851 Change-Id: Ia2a955e718cc0486af5a05e24fcfcb1c4bacb48d Reviewed-by: Andy Shaw <andy.shaw@qt.io> (cherry picked from commit f12e2061c460504d6db1d1370e97b5eeead9c7bf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/quicktemplates2/qquickmenu.cpp7
-rw-r--r--src/quicktemplates2/qquickmenu_p_p.h2
2 files changed, 8 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp
index e4c9b683..01309ef2 100644
--- a/src/quicktemplates2/qquickmenu.cpp
+++ b/src/quicktemplates2/qquickmenu.cpp
@@ -216,8 +216,12 @@ public:
QQuickMenuPrivate::QQuickMenuPrivate()
{
- Q_Q(QQuickMenu);
cascade = shouldCascade();
+}
+
+void QQuickMenuPrivate::init()
+{
+ Q_Q(QQuickMenu);
contentModel = new QQmlObjectModel(q);
}
@@ -721,6 +725,7 @@ QQuickMenu::QQuickMenu(QObject *parent)
{
Q_D(QQuickMenu);
setFocus(true);
+ d->init();
connect(d->contentModel, &QQmlObjectModel::countChanged, this, &QQuickMenu::countChanged);
}
diff --git a/src/quicktemplates2/qquickmenu_p_p.h b/src/quicktemplates2/qquickmenu_p_p.h
index ec48c919..63553f8a 100644
--- a/src/quicktemplates2/qquickmenu_p_p.h
+++ b/src/quicktemplates2/qquickmenu_p_p.h
@@ -73,6 +73,8 @@ public:
return menu->d_func();
}
+ void init();
+
QQuickItem *itemAt(int index) const;
void insertItem(int index, QQuickItem *item);
void moveItem(int from, int to);