Always reset the use count to its previous value before returning FALSE.
authorMatthias Clasen <matthiasc@src.gnome.org>
Tue, 2 Dec 2008 05:14:00 +0000 (05:14 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 2 Dec 2008 05:14:00 +0000 (05:14 +0000)
        * gtypemodule.c (g_type_module_use): Always reset the use count
        to its previous value before returning FALSE. Pointed out by
        Johan Billien.

svn path=/trunk/; revision=7725

gobject/ChangeLog
gobject/gtypemodule.c

index 8d6ec59..13697bd 100644 (file)
@@ -1,3 +1,12 @@
+2008-12-02  Matthias Clasen  <mclasen@redhat.com>
+
+       Bug 473150 – g_type_module_use inconsistently increases the use
+       counter in case of error
+
+       * gtypemodule.c (g_type_module_use): Always reset the use count
+       to its previous value before returning FALSE. Pointed out by
+       Johan Billien.
+
 2008-12-01  Matthias Clasen  <mclasen@redhat.com>
 
        * === Released 2.19.2 ===
index 07e3157..1ba64ad 100644 (file)
@@ -238,6 +238,8 @@ g_type_module_find_interface_info (GTypeModule *module,
  * 
  * Increases the use count of a #GTypeModule by one. If the
  * use count was zero before, the plugin will be loaded.
+ * If loading the plugin fails, the use count is reset to 
+ * its prior value. 
  * 
  * Returns: %FALSE if the plugin needed to be loaded and
  *  loading the plugin failed.
@@ -267,6 +269,7 @@ g_type_module_use (GTypeModule *module)
              g_warning ("plugin '%s' failed to register type '%s'\n",
                         module->name ? module->name : "(unknown)",
                         g_type_name (type_info->type));
+             module->use_count--;
              return FALSE;
            }