12c4b03468a6ac38537af40fb796258bc7e84d52
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 7179f84..3da053b 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1194,8 +1194,8 @@ gtk_main (void)
       /* Try storing all clipboard data we have */
       _gtk_clipboard_store_all ();
 
-      /* Synchronize and unref the recent manager singleton */
-      _gtk_recent_manager_sync_and_remove ();
+      /* Synchronize the recent manager singleton */
+      _gtk_recent_manager_sync ();
     }
 }
 
diff --git a/gtk/gtkrecentmanager.c b/gtk/gtkrecentmanager.c
index 9e07aea..8c02699 100644
--- a/gtk/gtkrecentmanager.c
+++ b/gtk/gtkrecentmanager.c
@@ -2377,18 +2377,18 @@ gtk_recent_info_has_group (GtkRecentInfo *info,
 }
 
 /*
- * _gtk_recent_manager_sync_and_remove:
+ * _gtk_recent_manager_sync:
  * 
- * Private function for synchronising the recent manager singleton
- * and closing it without leaking.
+ * Private function for synchronising the recent manager singleton.
  */
 void
-_gtk_recent_manager_sync_and_remove (void)
+_gtk_recent_manager_sync (void)
 {
   if (recent_manager_singleton)
     {
-      g_object_unref (recent_manager_singleton);
-      recent_manager_singleton = NULL;
+      /* force a dump of the contents of the recent manager singleton */
+      recent_manager_singleton->priv->is_dirty = TRUE;
+      gtk_recent_manager_real_changed (recent_manager_singleton);
     }
 }
 
diff --git a/gtk/gtkrecentmanager.h b/gtk/gtkrecentmanager.h
index d95a726..b184b3f 100644
--- a/gtk/gtkrecentmanager.h
+++ b/gtk/gtkrecentmanager.h
@@ -206,7 +206,7 @@ gboolean              gtk_recent_info_match                (GtkRecentInfo  *info
 							    GtkRecentInfo  *info_b);
 
 /* private */
-void _gtk_recent_manager_sync_and_remove (void);
+void _gtk_recent_manager_sync (void);
 
 G_END_DECLS
 
