From d316b798b33178203bc18bbec06b87a358a50167 Mon Sep 17 00:00:00 2001
From: Andrew den Exter <andrew.den.exter@qinetic.com.au>
Date: Wed, 24 Feb 2016 11:41:36 +1000
Subject: [PATCH] Fix crash when pinging a surface with an invalid resource.

Check the surface hasn't been deleted before initiating the ping so
that an invalid resource isn't dereferenced when printing a warning
after the operation inevitably fails.

Change-Id: I18c82de280d5a7a5339e3179c2bba49800626bb6
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
---
 src/compositor/compositor_api/qwaylandsurface.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/compositor/compositor_api/qwaylandsurface.cpp b/src/compositor/compositor_api/qwaylandsurface.cpp
index a8dc41fd5..f1615521e 100644
--- a/src/compositor/compositor_api/qwaylandsurface.cpp
+++ b/src/compositor/compositor_api/qwaylandsurface.cpp
@@ -361,6 +361,10 @@ bool QWaylandSurface::sendInterfaceOp(QWaylandSurfaceOp &op)
 void QWaylandSurface::ping()
 {
     Q_D(QWaylandSurface);
+
+    if (d->isDestroyed())
+        return;
+
     uint32_t serial = wl_display_next_serial(compositor()->waylandDisplay());
     QWaylandSurfacePingOp op(serial);
     if (!sendInterfaceOp(op)) {
-- 
GitLab