diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-06-30 16:06:46 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2016-06-30 15:29:26 +0000 |
commit | f5ee1feeed2abbcbe6db2bf9757d692b38fcbcb1 (patch) | |
tree | 0a98a41a6809948ac025b3b18a9dadc015d421bd /src/webenginewidgets | |
parent | 04c1f1a0039c7e90f31f5a8245b1d78ceff3a687 (diff) |
Fix invalid pointer in script collection after opening popup
The script collection has a pointer to webcontents adapter, and when a
new adapter is adopted, the pointer in the script collection needs to
be updated.
Task-number: QTBUG-54419
Change-Id: Ia054e1281ab4db637beab570abda752074dc9280
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 45177d8d8..0d556f15b 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -288,8 +288,11 @@ void QWebEnginePagePrivate::adoptNewWindow(WebContentsAdapter *newWebContents, W // Overwrite the new page's WebContents with ours. if (newPage->d_func() != this) { + // Keep the old adapter referenced until the scriptcollection is rebound + QExplicitlySharedDataPointer<WebContentsAdapter> oldWebContents = newPage->d_func()->adapter; newPage->d_func()->adapter = newWebContents; newWebContents->initialize(newPage->d_func()); + newPage->d_func()->scriptCollection.d->rebindToContents(newWebContents); if (!initialGeometry.isEmpty()) emit newPage->geometryChangeRequested(initialGeometry); } |