changeset 11715:e586c030e430 HEAD

module_dir_load(): Ignore duplicates in module names.
author Timo Sirainen <tss@iki.fi>
date Fri, 02 Jul 2010 18:58:55 +0100
parents 1683324ac632
children 3d737e1ed65e
files src/lib/module-dir.c
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/module-dir.c	Fri Jul 02 18:47:43 2010 +0100
+++ b/src/lib/module-dir.c	Fri Jul 02 18:58:55 2010 +0100
@@ -250,12 +250,20 @@
 
 static void module_names_fix(const char **module_names)
 {
-	unsigned int i;
+	unsigned int i, j;
 
 	/* allow giving the module names also in non-base form.
 	   convert them in here. */
 	for (i = 0; module_names[i] != NULL; i++)
 		module_names[i] = module_file_get_name(module_names[i]);
+
+	/* @UNSAFE: drop duplicates */
+	qsort(module_names, i, sizeof(*module_names), i_strcmp_p);
+	for (i = j = 1; module_names[i] != NULL; i++) {
+		if (strcmp(module_names[i-1], module_names[i]) != 0)
+			module_names[j++] = module_names[i];
+	}
+	module_names[j] = NULL;
 }
 
 static bool