From 29bab936f7887185b2db8966cb2d4baadfdc8263 Mon Sep 17 00:00:00 2001 From: barbieri Date: Tue, 16 Jun 2009 15:02:57 +0000 Subject: [PATCH] do not add duplicate search paths to module loader. usually libevas.so/../evas/modules is the same as libdir/evas/modules, so avoid adding it twice. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@41059 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/file/evas_module.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/lib/file/evas_module.c b/src/lib/file/evas_module.c index 7bb05f1..da5a382 100644 --- a/src/lib/file/evas_module.c +++ b/src/lib/file/evas_module.c @@ -40,8 +40,8 @@ _evas_module_append(Eina_List *list, char *path) void evas_module_paths_init(void) { - char *prefix; - char *path; + char *path, *path2; + const char *path3; /* 1. ~/.evas/modules/ */ path = eina_module_environment_path_get("HOME", "/.evas/modules"); @@ -52,17 +52,21 @@ evas_module_paths_init(void) evas_module_paths = _evas_module_append(evas_module_paths, path); /* 3. libevas.so/../evas/modules/ */ - path = eina_module_symbol_path_get(evas_module_paths_init, "/evas/modules"); - evas_module_paths = _evas_module_append(evas_module_paths, path); + path2 = eina_module_symbol_path_get(evas_module_paths_init, "/evas/modules"); + if (path2 && path && (strcmp(path, path2) == 0)) + free(path2); + else + evas_module_paths = _evas_module_append(evas_module_paths, path2); /* 4. PREFIX/evas/modules/ */ - prefix = PACKAGE_LIB_DIR; - path = malloc(strlen(prefix) + 1 + strlen("/evas/modules")); - if (path) + path3 = PACKAGE_LIB_DIR "/evas/modules"; + if ((path && (strcmp(path, path3) != 0)) || + (path2 && (strcmp(path2, path3) != 0)) || + (!path && !path2)) { - strcpy(path, prefix); - strcat(path, "/evas/modules"); - evas_module_paths = _evas_module_append(evas_module_paths, path); + path = strdup(path3); + if (path) + evas_module_paths = _evas_module_append(evas_module_paths, path); } } -- 2.7.4