e52acc8
From dc516c4e99c45ee4433062f473665e59a06de546 Mon Sep 17 00:00:00 2001
e52acc8
From: Yaakov Selkowitz <yselkowi@redhat.com>
e52acc8
Date: Thu, 16 Jul 2015 22:21:18 -0500
e52acc8
Subject: [PATCH] Avoid SEGV in gs_fade_reset
e52acc8
e52acc8
On Fedora 21, when run in tigervnc-server built with xorg-x11-server-1.16,
e52acc8
but not on Xorg nor on Fedora 22 with tigervnc-server built with 1.17,
e52acc8
it appears that nothing provides the necessary functionality for a fade,
e52acc8
but (*fade_finish) is called without checking.
e52acc8
e52acc8
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
e52acc8
---
e52acc8
 src/gs-fade.c | 6 ++++--
e52acc8
 1 file changed, 4 insertions(+), 2 deletions(-)
e52acc8
e52acc8
diff --git a/src/gs-fade.c b/src/gs-fade.c
e52acc8
index 68e596f..03e02cf 100644
e52acc8
--- a/src/gs-fade.c
e52acc8
+++ b/src/gs-fade.c
e52acc8
@@ -835,8 +835,10 @@ gs_fade_reset (GSFade *fade)
e52acc8
 
e52acc8
         gs_fade_set_alpha (fade, fade->priv->current_alpha);
e52acc8
 
e52acc8
-        for (i = 0; i < fade->priv->num_screens; i++)
e52acc8
-                fade->priv->screen_priv[i].fade_finish (fade, i);
e52acc8
+        for (i = 0; i < fade->priv->num_screens; i++) {
e52acc8
+                if (fade->priv->screen_priv[i].fade_type != FADE_TYPE_NONE)
e52acc8
+                        fade->priv->screen_priv[i].fade_finish (fade, i);
e52acc8
+        }
e52acc8
 }
e52acc8
 
e52acc8
 static void
e52acc8
-- 
e52acc8
2.1.0
e52acc8