gmain: remove unix signal watch if its GSourceFunc returns FALSE
authorDan Winship <danw@gnome.org>
Thu, 23 Aug 2012 16:38:17 +0000 (12:38 -0400)
committerDan Winship <danw@gnome.org>
Mon, 27 Aug 2012 11:24:15 +0000 (07:24 -0400)
g_unix_signal_watch_dispatch() was ignore the callback's return value.
Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=682560

glib/gmain.c

index 0472bd5f254158467d8854c4c944971b0cbfea58..c0c4581687d62e2c0b1bbb866cb726f4fe036a96 100644 (file)
@@ -4499,6 +4499,7 @@ g_unix_signal_watch_dispatch (GSource    *source,
                              gpointer    user_data)
 {
   GUnixSignalWatchSource *unix_signal_source;
+  gboolean again;
 
   unix_signal_source = (GUnixSignalWatchSource *) source;
 
@@ -4509,11 +4510,11 @@ g_unix_signal_watch_dispatch (GSource    *source,
       return FALSE;
     }
 
-  (callback) (user_data);
+  again = (callback) (user_data);
 
   unix_signal_source->pending = FALSE;
 
-  return TRUE;
+  return again;
 }
 
 static void