parent
32ef535e2c
commit
4956122fe0
@ -0,0 +1,50 @@
|
|||||||
|
From 1c098f6efa9ce449bc94e71bf8e317e1d607c4f8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Maciej Sitarz <macieksitarz@wp.pl>
|
||||||
|
Date: Mon, 8 Jan 2018 15:01:11 +0000
|
||||||
|
Subject: [PATCH 13/13] Fix for xembedsniproxy crash due to NULL returned from
|
||||||
|
xcb_image_get()
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
In my environment (Fedora 27, plasma-workspace-5.11.4-1.fc27.x86_64) xembedsniproxy crashes.
|
||||||
|
This is caused by NULL being returned by xcb_image_get().
|
||||||
|
|
||||||
|
This should fix or at least mitigate the problems from bugs:
|
||||||
|
https://bugs.kde.org/show_bug.cgi?id=355463
|
||||||
|
https://bugs.kde.org/show_bug.cgi?id=359664
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1497829
|
||||||
|
|
||||||
|
Reviewers: #plasma, davidedmundson
|
||||||
|
|
||||||
|
Reviewed By: #plasma, davidedmundson
|
||||||
|
|
||||||
|
Subscribers: broulik, plasma-devel
|
||||||
|
|
||||||
|
Tags: #plasma
|
||||||
|
|
||||||
|
Differential Revision: https://phabricator.kde.org/D9732
|
||||||
|
---
|
||||||
|
xembed-sni-proxy/sniproxy.cpp | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/xembed-sni-proxy/sniproxy.cpp b/xembed-sni-proxy/sniproxy.cpp
|
||||||
|
index 7fb00dbb..932109d9 100644
|
||||||
|
--- a/xembed-sni-proxy/sniproxy.cpp
|
||||||
|
+++ b/xembed-sni-proxy/sniproxy.cpp
|
||||||
|
@@ -288,7 +288,13 @@ QImage SNIProxy::getImageNonComposite() const
|
||||||
|
xcb_image_t *image = xcb_image_get(c, m_windowId, 0, 0, geom->width, geom->height, 0xFFFFFFFF, XCB_IMAGE_FORMAT_Z_PIXMAP);
|
||||||
|
|
||||||
|
// Don't hook up cleanup yet, we may use a different QImage after all
|
||||||
|
- QImage naiveConversion = QImage(image->data, image->width, image->height, QImage::Format_ARGB32);
|
||||||
|
+ QImage naiveConversion;
|
||||||
|
+ if (image) {
|
||||||
|
+ naiveConversion = QImage(image->data, image->width, image->height, QImage::Format_ARGB32);
|
||||||
|
+ } else {
|
||||||
|
+ qCDebug(SNIPROXY) << "Skip NULL image returned from xcb_image_get() for" << m_windowId << Title();
|
||||||
|
+ return QImage();
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (isTransparentImage(naiveConversion)) {
|
||||||
|
QImage elaborateConversion = QImage(convertFromNative(image));
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
@ -1,17 +0,0 @@
|
|||||||
--- plasma-workspace-5.11.4/xembed-sni-proxy/sniproxy.cpp_orig 2018-01-08 13:40:42.070485134 +0100
|
|
||||||
+++ plasma-workspace-5.11.4/xembed-sni-proxy/sniproxy.cpp 2018-01-08 13:42:03.734526387 +0100
|
|
||||||
@@ -288,7 +288,13 @@
|
|
||||||
xcb_image_t *image = xcb_image_get(c, m_windowId, 0, 0, geom->width, geom->height, 0xFFFFFFFF, XCB_IMAGE_FORMAT_Z_PIXMAP);
|
|
||||||
|
|
||||||
// Don't hook up cleanup yet, we may use a different QImage after all
|
|
||||||
- QImage naiveConversion = QImage(image->data, image->width, image->height, QImage::Format_ARGB32);
|
|
||||||
+ QImage naiveConversion;
|
|
||||||
+ if (nullptr != image) {
|
|
||||||
+ naiveConversion = QImage(image->data, image->width, image->height, QImage::Format_ARGB32);
|
|
||||||
+ } else {
|
|
||||||
+ qCDebug(SNIPROXY) << "Skip NULL image returned from xcb_image_get() for" << m_windowId << Title();
|
|
||||||
+ return QImage();
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (isTransparentImage(naiveConversion)) {
|
|
||||||
QImage elaborateConversion = QImage(convertFromNative(image));
|
|
Loading…
Reference in new issue