diff options
author | Jannis Pohlmann <jannis@xfce.org> | 2009-06-09 15:34:17 +0200 |
---|---|---|
committer | Jannis Pohlmann <jannis@xfce.org> | 2009-06-09 15:34:17 +0200 |
commit | 6f37775b1589f57839e1e62f27154f79a0618aed (patch) | |
tree | 8c5f0001e57ed508e49464b2683ffc02421d216e /tumbler/tumbler-provider-factory.c | |
parent | 350f07e8f228cd6c2e137a610f81da1ddbd0e6e2 (diff) | |
download | tumbler-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.c | 12 |
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); - } + /* }*/ } } } |