Mercurial > dovecot > core-2.2
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