f5dcee4
commit a1835572951be24cdaa15496708d502ef90e29ff
f5dcee4
Author: Ray Strode <rstrode@redhat.com>
f5dcee4
Date:   Wed Oct 28 11:13:10 2009 -0400
f5dcee4
f5dcee4
    Prevent start session signal handler from getting called multiple times
f5dcee4
    
f5dcee4
    It was causing a double free.
f5dcee4
f5dcee4
diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
f5dcee4
index 4991cb1..4e147ea 100644
f5dcee4
--- a/gui/simple-greeter/gdm-greeter-login-window.c
f5dcee4
+++ b/gui/simple-greeter/gdm-greeter-login-window.c
f5dcee4
@@ -908,8 +908,17 @@ on_ready_to_start_session (GdmGreeterLoginWindow *login_window,
f5dcee4
                            GParamSpec            *param_spec,
f5dcee4
                            char                  *service_name)
f5dcee4
 {
f5dcee4
+        if (!login_window->priv->is_interactive) {
f5dcee4
+                return;
f5dcee4
+        }
f5dcee4
+
f5dcee4
         gdm_greeter_login_window_start_session_when_ready (login_window, service_name);
f5dcee4
         g_free (service_name);
f5dcee4
+
f5dcee4
+        if (login_window->priv->start_session_handler_id > 0) {
f5dcee4
+                g_signal_handler_disconnect (login_window, login_window->priv->start_session_handler_id);
f5dcee4
+                login_window->priv->start_session_handler_id = 0;
f5dcee4
+        }
f5dcee4
 }
f5dcee4
 
f5dcee4
 static void