GAsyncInitable: partially revert the init_finish changes
authorDan Winship <danw@gnome.org>
Tue, 17 Jul 2012 13:12:39 +0000 (09:12 -0400)
committerDan Winship <danw@gnome.org>
Tue, 17 Jul 2012 13:15:44 +0000 (09:15 -0400)
g_async_initable_real_init_finish() was previously handling all
GSimpleAsyncResults, even if they weren't created by
g_async_initable_real_init_async(), and libnm-glib accidentally relied
on that behavior. So remove the g_simple_async_result_is_valid()
check.

gio/gasyncinitable.c

index e8cf8c967c3031e05418a679cd59f28132255304..d5712a5179d6cfe0c9eae39d41f49ba8b0b52a20 100644 (file)
@@ -290,15 +290,16 @@ g_async_initable_real_init_finish (GAsyncInitable  *initable,
                                   GAsyncResult    *res,
                                   GError         **error)
 {
-  GSimpleAsyncResult *simple;
+  /* For backward compatibility we have to process GSimpleAsyncResults
+   * even if they aren't tagged from g_async_initable_real_init_async.
+   */
+  if (G_IS_SIMPLE_ASYNC_RESULT (res))
+    {
+      GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
+      if (g_simple_async_result_propagate_error (simple, error))
+       return FALSE;
+    }
 
-  g_return_val_if_fail (g_simple_async_result_is_valid (res, G_OBJECT (initable),
-                                                       g_async_initable_real_init_async),
-                       FALSE);
-
-  simple = G_SIMPLE_ASYNC_RESULT (res);
-  if (g_simple_async_result_propagate_error (simple, error))
-    return FALSE;
   return TRUE;
 }