From cf3e5af90ebf4d13b73ac2888f7188d5b17e56ac Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 2 Sep 2015 19:20:04 +0900 Subject: [PATCH] elm map - fix module load craziness loading all elm modules so elm map loads every module it can find in a recursive dir walk of all elm modules. this si nuts. this can accidentallly load OLD modules and thats a recipe for disaster. so check module arch dir aagainst module arch string to load the right version and be quiet if module doesn thave the right symbols - it's the wrong module type. @fix --- legacy/elementary/src/lib/elm_map.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/legacy/elementary/src/lib/elm_map.c b/legacy/elementary/src/lib/elm_map.c index b799c7e931..8a3101894c 100644 --- a/legacy/elementary/src/lib/elm_map.c +++ b/legacy/elementary/src/lib/elm_map.c @@ -3451,6 +3451,8 @@ _source_mod_cb(Eina_Module *m, { const char *file; Elm_Map_Data *sd = data; + char *dir; + const char *subfile; Elm_Map_Module_Source_Name_Func name_cb; Elm_Map_Module_Tile_Url_Func tile_url_cb; @@ -3465,17 +3467,28 @@ _source_mod_cb(Eina_Module *m, EINA_SAFETY_ON_NULL_RETURN_VAL(data, EINA_FALSE); file = eina_module_file_get(m); - if (!eina_module_load(m)) + if (!file) return EINA_FALSE; + + dir = ecore_file_dir_get(file); + if (!dir) return EINA_FALSE; + subfile = ecore_file_file_get(dir); + if (!subfile) { - ERR("Could not load module \"%s\": %s", file, - eina_error_msg_get(eina_error_get())); + free(dir); return EINA_FALSE; } + if (strcmp(subfile, MODULE_ARCH)) + { + free(dir); + return EINA_FALSE; + } + free(dir); + + if (!eina_module_load(m)) return EINA_FALSE; + name_cb = eina_module_symbol_get(m, "map_module_source_name_get"); if ((!name_cb)) { - WRN("Could not find map module name from module \"%s\": %s", - file, eina_error_msg_get(eina_error_get())); eina_module_unload(m); return EINA_FALSE; }