diff src/audacious/pluginenum.c @ 4768:d470630b8cea

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.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 13 Aug 2008 21:33:54 +0300
parents f084f639e962
children c2dc7a3a7240
line wrap: on
line diff
--- 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]));
         }
     }