SF.net SVN: geany: [2618] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Tue May 27 14:47:38 UTC 2008
Revision: 2618
http://geany.svn.sourceforge.net/geany/?rev=2618&view=rev
Author: ntrel
Date: 2008-05-27 07:47:38 -0700 (Tue, 27 May 2008)
Log Message:
-----------
Fail to load a plugin if it has no plugin_init() function.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/plugins.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-05-26 17:24:11 UTC (rev 2617)
+++ trunk/ChangeLog 2008-05-27 14:47:38 UTC (rev 2618)
@@ -1,3 +1,9 @@
+2008-05-27 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/plugins.c:
+ Fail to load a plugin if it has no plugin_init() function.
+
+
2008-05-26 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/plugins.c:
Modified: trunk/src/plugins.c
===================================================================
--- trunk/src/plugins.c 2008-05-26 17:24:11 UTC (rev 2617)
+++ trunk/src/plugins.c 2008-05-27 14:47:38 UTC (rev 2618)
@@ -470,11 +470,8 @@
*plugin_fields = &plugin->fields;
/* start the plugin */
- g_module_symbol(plugin->module, "plugin_init", (void *) &plugin->init);
- if (plugin->init != NULL)
- plugin->init(&geany_data);
- else
- geany_debug("Plugin '%s' has no plugin_init() function!", plugin->info.name);
+ g_return_if_fail(plugin->init);
+ plugin->init(&geany_data);
/* store some function pointers for later use */
g_module_symbol(plugin->module, "configure", (void *) &plugin->configure);
@@ -511,7 +508,7 @@
}
-/* Load and init a plugin.
+/* Load and optionally init a plugin.
* init_plugin decides whether the plugin's plugin_init() function should be called or not. If it is
* called, the plugin will be started, if not the plugin will be read only (for the list of
* available plugins in the plugin manager).
@@ -590,6 +587,18 @@
g_free(plugin);
return NULL;
}
+
+ g_module_symbol(module, "plugin_init", (void *) &plugin->init);
+ if (plugin->init == NULL)
+ {
+ geany_debug("Plugin '%s' has no plugin_init() function - ignoring plugin!",
+ plugin->info.name);
+
+ if (! g_module_close(module))
+ g_warning("%s: %s", fname, g_module_error());
+ g_free(plugin);
+ return NULL;
+ }
geany_debug("Initializing plugin '%s'", plugin->info.name);
plugin->filename = g_strdup(fname);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list