diff options
-rw-r--r-- | e-util/ChangeLog | 5 | ||||
-rw-r--r-- | e-util/e-plugin.c | 12 |
2 files changed, 10 insertions, 7 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog index 4464929ffd..b8e65ac2fa 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,8 @@ +2004-11-19 Not Zed <NotZed@Ximian.com> + + * e-plugin.c (ep_load): if the plugin fails to load just disable + it, don't unref it (it may be referenced elsewhere). + 2004-11-18 Not Zed <NotZed@Ximian.com> * e-plugin.c (epl_loadmodule): split out module loadng code. diff --git a/e-util/e-plugin.c b/e-util/e-plugin.c index d163a8a5ec..6167b1238f 100644 --- a/e-util/e-plugin.c +++ b/e-util/e-plugin.c @@ -333,13 +333,11 @@ ep_load(const char *filename) ep->id = id; ep->path = g_strdup(filename); ep->enabled = ep_check_enabled(id); - if (e_plugin_construct(ep, root) == -1) { - g_object_unref(ep); - } else { - g_hash_table_insert(ep_plugins, ep->id, ep); - pdoc->plugins = g_slist_prepend(pdoc->plugins, ep); - cache |= (ep->hooks_pending != NULL); - } + if (e_plugin_construct(ep, root) == -1) + e_plugin_enable(ep, FALSE); + g_hash_table_insert(ep_plugins, ep->id, ep); + pdoc->plugins = g_slist_prepend(pdoc->plugins, ep); + cache |= (ep->hooks_pending != NULL); } } |