From 3af17048cbd64fff17eedc340571e7555ea9790a Mon Sep 17 00:00:00 2001
From: Alexandru Croitor <alexandru.croitor@qt.io>
Date: Tue, 31 May 2016 14:15:17 +0200
Subject: [PATCH] Fix crash related to audioMuted and recentlyAudible
 properties in qml.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

If the qml properties audioMuted or recentlyAudible are accessed / set
on a WebEngineView on application startup, the application will crash
due to accessing a null pointer (the web contents adapter is not
allocated yet).

Add guards against null pointer access, to prevent the crash.

Change-Id: I939be9afa093d1889024b2ff9308deb88b9316bf
Reviewed-by: Michael Brüning <michael.bruning@theqtcompany.com>
---
 src/webengine/api/qquickwebengineview.cpp | 24 +++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 1b1dcec25..391fa585d 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -1184,24 +1184,32 @@ void QQuickWebEngineView::setBackgroundColor(const QColor &color)
 
     The default value is false.
 */
-bool QQuickWebEngineView::isAudioMuted() const {
+bool QQuickWebEngineView::isAudioMuted() const
+{
     const Q_D(QQuickWebEngineView);
-    return d->adapter->isAudioMuted();
-
+    if (d->adapter)
+        return d->adapter->isAudioMuted();
+    return false;
 }
-void QQuickWebEngineView::setAudioMuted(bool muted) {
+
+void QQuickWebEngineView::setAudioMuted(bool muted)
+{
     Q_D(QQuickWebEngineView);
     bool _isAudioMuted = isAudioMuted();
-    d->adapter->setAudioMuted(muted);
-    if (_isAudioMuted != muted) {
-        Q_EMIT audioMutedChanged(muted);
+    if (d->adapter) {
+        d->adapter->setAudioMuted(muted);
+        if (_isAudioMuted != muted) {
+            Q_EMIT audioMutedChanged(muted);
+        }
     }
 }
 
 bool QQuickWebEngineView::recentlyAudible() const
 {
     const Q_D(QQuickWebEngineView);
-    return d->adapter->recentlyAudible();
+    if (d->adapter)
+        return d->adapter->recentlyAudible();
+    return false;
 }
 
 void QQuickWebEngineView::printToPdf(const QString& filePath, PrintedPageSizeId pageSizeId, PrintedPageOrientation orientation)
-- 
GitLab