# HG changeset patch # User Matti Hamalainen # Date 1218652434 -10800 # Node ID d470630b8cea29fdd5e09fd472c376da9765bc32 # Parent ba9eb9cc287fc4b2dab71f7c1b8b515ef3952fe8 The famed "multiple plugins in one module" feature didn't actually work, because structure indices were being indexed by same variable (which was never reset for different plugin structs.) Fixed. diff -r ba9eb9cc287f -r d470630b8cea src/audacious/pluginenum.c --- a/src/audacious/pluginenum.c Wed Aug 13 00:06:24 2008 +0300 +++ b/src/audacious/pluginenum.c Wed Aug 13 21:33:54 2008 +0300 @@ -654,7 +654,7 @@ void plugin2_process(PluginHeader *header, GModule *module, const gchar *filename) { - int i; + gint i, n; mowgli_node_t *hlist_node; if (header->magic != PLUGIN_MAGIC) @@ -674,58 +674,59 @@ header->priv_assoc->handle = module; header->priv_assoc->filename = g_strdup(filename); - i = 0; - + n = 0; + if (header->ip_list) { - for (; (header->ip_list)[i] != NULL; i++) + for (i = 0; (header->ip_list)[i] != NULL; i++, n++) { - PLUGIN((header->ip_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, i); + PLUGIN((header->ip_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, n); input_plugin_init(PLUGIN((header->ip_list)[i])); } } if (header->op_list) { - for (; (header->op_list)[i] != NULL; i++) + for (i = 0; (header->op_list)[i] != NULL; i++, n++) { - PLUGIN((header->op_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, i); + PLUGIN((header->op_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, n); output_plugin_init(PLUGIN((header->op_list)[i])); } } if (header->ep_list) { - for (; (header->ep_list)[i] != NULL; i++) + for (i = 0; (header->ep_list)[i] != NULL; i++, n++) { - PLUGIN((header->ep_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, i); + PLUGIN((header->ep_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, n); effect_plugin_init(PLUGIN((header->ep_list)[i])); } } + if (header->gp_list) { - for (; (header->gp_list)[i] != NULL; i++) + for (i = 0; (header->gp_list)[i] != NULL; i++, n++) { - PLUGIN((header->gp_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, i); + PLUGIN((header->gp_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, n); general_plugin_init(PLUGIN((header->gp_list)[i])); } } if (header->vp_list) { - for (; (header->vp_list)[i] != NULL; i++) + for (i = 0; (header->vp_list)[i] != NULL; i++, n++) { - PLUGIN((header->vp_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, i); + PLUGIN((header->vp_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, n); vis_plugin_init(PLUGIN((header->vp_list)[i])); } } if (header->dp_list) { - for (; (header->dp_list)[i] != NULL; i++) + for (i = 0; (header->dp_list)[i] != NULL; i++, n++) { - PLUGIN((header->dp_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, i); + PLUGIN((header->dp_list)[i])->filename = g_strdup_printf("%s (#%d)", filename, n); discovery_plugin_init(PLUGIN((header->dp_list)[i])); } }