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
This commit is contained in:
Carsten Haitzler 2015-09-02 19:20:04 +09:00
parent b20526c32e
commit cf3e5af90e
1 changed files with 18 additions and 5 deletions

View File

@ -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;
}