summaryrefslogtreecommitdiff
path: root/tumbler/tumbler-provider-factory.c
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis@xfce.org>2009-06-09 15:34:17 +0200
committerJannis Pohlmann <jannis@xfce.org>2009-06-09 15:34:17 +0200
commit6f37775b1589f57839e1e62f27154f79a0618aed (patch)
tree8c5f0001e57ed508e49464b2683ffc02421d216e /tumbler/tumbler-provider-factory.c
parent350f07e8f228cd6c2e137a610f81da1ddbd0e6e2 (diff)
downloadtumbler-6f37775b1589f57839e1e62f27154f79a0618aed.tar.gz
Fix bug in deallocation of provider infos in TumblerProviderFactory.
Diffstat (limited to 'tumbler/tumbler-provider-factory.c')
-rw-r--r--tumbler/tumbler-provider-factory.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/tumbler/tumbler-provider-factory.c b/tumbler/tumbler-provider-factory.c
index 4991a38..f975067 100644
--- a/tumbler/tumbler-provider-factory.c
+++ b/tumbler/tumbler-provider-factory.c
@@ -133,14 +133,17 @@ static void
tumbler_provider_factory_finalize (GObject *object)
{
TumblerProviderFactory *factory = TUMBLER_PROVIDER_FACTORY (object);
+ TumblerProviderInfo *info;
guint n;
/* release all cached provider infos */
for (n = 0; n < factory->priv->provider_infos->len; ++n)
{
+ info = factory->priv->provider_infos->pdata[n];
+
/* free cached provider objects */
- if (factory->priv->provider_infos->pdata[n] != NULL)
- g_object_unref (factory->priv->provider_infos->pdata[n]);
+ if (info != NULL && info->provider != NULL)
+ g_object_unref (info->provider);
/* free cached provider info */
g_slice_free (TumblerProviderInfo, factory->priv->provider_infos->pdata[n]);
@@ -237,11 +240,12 @@ tumbler_provider_factory_load_plugins (TumblerProviderFactory *factory)
plugins = g_list_prepend (plugins, plugin);
/* we only add types to our cache the first time a module is loaded */
+ /*
if (lp == NULL)
- {
+ {*/
/* add the types provided by the plugin */
tumbler_provider_factory_add_types (factory, plugin);
- }
+ /* }*/
}
}
}