Blob Blame History Raw
From dc516c4e99c45ee4433062f473665e59a06de546 Mon Sep 17 00:00:00 2001
From: Yaakov Selkowitz <yselkowi@redhat.com>
Date: Thu, 16 Jul 2015 22:21:18 -0500
Subject: [PATCH] Avoid SEGV in gs_fade_reset

On Fedora 21, when run in tigervnc-server built with xorg-x11-server-1.16,
but not on Xorg nor on Fedora 22 with tigervnc-server built with 1.17,
it appears that nothing provides the necessary functionality for a fade,
but (*fade_finish) is called without checking.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
---
 src/gs-fade.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gs-fade.c b/src/gs-fade.c
index 68e596f..03e02cf 100644
--- a/src/gs-fade.c
+++ b/src/gs-fade.c
@@ -835,8 +835,10 @@ gs_fade_reset (GSFade *fade)
 
         gs_fade_set_alpha (fade, fade->priv->current_alpha);
 
-        for (i = 0; i < fade->priv->num_screens; i++)
-                fade->priv->screen_priv[i].fade_finish (fade, i);
+        for (i = 0; i < fade->priv->num_screens; i++) {
+                if (fade->priv->screen_priv[i].fade_type != FADE_TYPE_NONE)
+                        fade->priv->screen_priv[i].fade_finish (fade, i);
+        }
 }
 
 static void
-- 
2.1.0