aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--e-util/ChangeLog5
-rw-r--r--e-util/e-plugin.c12
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);
}
}