Blame SOURCES/workaround-crash.patch

6e9cc4
diff -up GConf-3.2.6/gconf/gconfd.c.workaround-crash GConf-3.2.6/gconf/gconfd.c
6e9cc4
--- GConf-3.2.6/gconf/gconfd.c.workaround-crash	2013-04-15 10:12:54.480753142 -0400
6e9cc4
+++ GConf-3.2.6/gconf/gconfd.c	2013-04-15 10:12:53.457736847 -0400
6e9cc4
@@ -1076,17 +1076,6 @@ periodic_cleanup_timeout(gpointer data)
6e9cc4
 #endif
6e9cc4
   drop_old_databases ();
6e9cc4
 
6e9cc4
-#ifdef HAVE_DBUS
6e9cc4
-  if (no_databases_in_use () && gconfd_dbus_client_count () == 0)
6e9cc4
-#else
6e9cc4
-  if (no_databases_in_use () && client_count () == 0)
6e9cc4
-#endif
6e9cc4
-    {
6e9cc4
-      gconf_log (GCL_INFO, _("GConf server is not in use, shutting down."));
6e9cc4
-      gconfd_main_quit ();
6e9cc4
-      return FALSE;
6e9cc4
-    }
6e9cc4
-  
6e9cc4
   /* expire old locale cache entries */
6e9cc4
   gconfd_locale_cache_expire ();
6e9cc4
 
6e9cc4
@@ -1105,7 +1094,6 @@ periodic_cleanup_timeout(gpointer data)
6e9cc4
   
6e9cc4
   return TRUE;
6e9cc4
 }
6e9cc4
-
6e9cc4
 void
6e9cc4
 gconfd_need_log_cleanup (void)
6e9cc4
 {
6e9cc4
@@ -1131,14 +1119,14 @@ gconf_main(void)
6e9cc4
     }
6e9cc4
   
6e9cc4
   main_loops = g_slist_prepend(main_loops, loop);
6e9cc4
+  main_loops = g_slist_prepend(main_loops, loop);
6e9cc4
 
6e9cc4
   g_main_loop_run (loop);
6e9cc4
 
6e9cc4
   main_loops = g_slist_remove(main_loops, loop);
6e9cc4
 
6e9cc4
-  if (main_loops == NULL)
6e9cc4
+  if (main_loops == NULL && timeout_id != 0)
6e9cc4
     {
6e9cc4
-      g_assert(timeout_id != 0);
6e9cc4
       g_source_remove(timeout_id);
6e9cc4
       timeout_id = 0;
6e9cc4
     }