Don't assert on backend == settings->priv->backend
authorRyan Lortie <desrt@desrt.ca>
Fri, 8 Apr 2011 01:25:01 +0000 (21:25 -0400)
committerRyan Lortie <desrt@desrt.ca>
Fri, 8 Apr 2011 01:25:01 +0000 (21:25 -0400)
They could be different if a notification is queued for delivery and
someone calls g_settings_delay().

Bug #646843.

gio/gsettings.c

index d7c5f30..af2ab3c 100644 (file)
@@ -311,7 +311,17 @@ settings_backend_changed (GObject             *target,
   gboolean ignore_this;
   gint i;
 
-  g_assert (settings->priv->backend == backend);
+  /* We used to assert here:
+   *
+   *   settings->priv->backend == backend
+   *
+   * but it could be the case that a notification is queued for delivery
+   * while someone calls g_settings_delay() (which changes the backend).
+   *
+   * Since the delay backend would just pass that straight through
+   * anyway, it doesn't make sense to try to detect this case.
+   * Therefore, we just accept it.
+   */
 
   for (i = 0; key[i] == settings->priv->path[i]; i++);