gplugin/gplugin

e27afe56fcbe
Parents 87071fc34287
Children c9cc978bc294
Fix the very subtle but very real bug in gplugin-gtk-viewer. fixes #25
--- a/gplugin-gtk/gplugin-gtk-plugin-info.c Sat Feb 28 20:54:46 2015 -0600
+++ b/gplugin-gtk/gplugin-gtk-plugin-info.c Sun Mar 01 20:24:21 2015 -0600
@@ -84,14 +84,14 @@
GPluginPluginInfo *plugin_info = gplugin_plugin_get_info(plugin);
GPluginLoader *plugin_loader = gplugin_plugin_get_loader(plugin);
- if(GPLUGIN_IS_LOADER(plugin_loader)) {
+ filename = gplugin_plugin_get_filename(plugin);
+
+ if(plugin_loader && GPLUGIN_IS_LOADER(plugin_loader)) {
const char *loader_name = G_OBJECT_TYPE_NAME(plugin_loader);
loader = g_strdup(loader_name);
g_object_unref(G_OBJECT(plugin_loader));
}
- filename = gplugin_plugin_get_filename(plugin);
-
g_object_get(G_OBJECT(plugin_info),
"abi_version", &abi_version_uint,
"authors", &authors,
@@ -310,7 +310,7 @@
priv = GPLUGIN_GTK_PLUGIN_INFO_GET_PRIVATE(info);
- if(priv->plugin)
+ if(GPLUGIN_IS_PLUGIN(priv->plugin))
g_object_unref(G_OBJECT(priv->plugin));
if(GPLUGIN_IS_PLUGIN(plugin))
--- a/gplugin/gplugin-plugin.c Sat Feb 28 20:54:46 2015 -0600
+++ b/gplugin/gplugin-plugin.c Sun Mar 01 20:24:21 2015 -0600
@@ -130,10 +130,10 @@
g_value_set_string(value, gplugin_plugin_get_filename(plugin));
break;
case PROP_LOADER:
- g_value_set_object(value, gplugin_plugin_get_loader(plugin));
+ g_value_take_object(value, gplugin_plugin_get_loader(plugin));
break;
case PROP_INFO:
- g_value_set_object(value, gplugin_plugin_get_info(plugin));
+ g_value_take_object(value, gplugin_plugin_get_info(plugin));
break;
case PROP_STATE:
g_value_set_enum(value, gplugin_plugin_get_state(plugin));
@@ -306,7 +306,7 @@
* gplugin_plugin_get_loader:
* @plugin: #GPluginPlugin instance
*
- * Return Value: (transfer none): The #GPluginLoader that loaded @plugin
+ * Return Value: (transfer full): The #GPluginLoader that loaded @plugin
*/
GPluginLoader *
gplugin_plugin_get_loader(const GPluginPlugin *plugin) {
@@ -316,7 +316,7 @@
priv = GPLUGIN_PLUGIN_GET_PRIVATE(plugin);
- return priv->loader;
+ return (priv->info) ? g_object_ref(G_OBJECT(priv->loader)) : NULL;
}
/**