forked from enlightenment/efl
parent
49d3d36bde
commit
be17392520
|
@ -502,7 +502,9 @@ EAPI char *eina_module_symbol_path_get(const void *symbol, const char *sub_dir)
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(symbol, NULL);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(symbol, NULL);
|
||||||
|
|
||||||
if (dladdr(symbol, &eina_dl))
|
if (dladdr(symbol, &eina_dl))
|
||||||
if (strrchr(eina_dl.dli_fname, '/'))
|
{
|
||||||
|
char *pos = strrchr(eina_dl.dli_fname, '/');
|
||||||
|
if (pos)
|
||||||
{
|
{
|
||||||
char *path;
|
char *path;
|
||||||
int l0;
|
int l0;
|
||||||
|
@ -510,7 +512,7 @@ EAPI char *eina_module_symbol_path_get(const void *symbol, const char *sub_dir)
|
||||||
int l2 = 0;
|
int l2 = 0;
|
||||||
|
|
||||||
l0 = strlen(eina_dl.dli_fname);
|
l0 = strlen(eina_dl.dli_fname);
|
||||||
l1 = strlen(strrchr(eina_dl.dli_fname, '/'));
|
l1 = strlen(pos);
|
||||||
if (sub_dir && (*sub_dir != '\0'))
|
if (sub_dir && (*sub_dir != '\0'))
|
||||||
l2 = strlen(sub_dir);
|
l2 = strlen(sub_dir);
|
||||||
|
|
||||||
|
@ -520,10 +522,12 @@ EAPI char *eina_module_symbol_path_get(const void *symbol, const char *sub_dir)
|
||||||
memcpy(path, eina_dl.dli_fname, l0 - l1);
|
memcpy(path, eina_dl.dli_fname, l0 - l1);
|
||||||
if (sub_dir && (*sub_dir != '\0'))
|
if (sub_dir && (*sub_dir != '\0'))
|
||||||
memcpy(path + l0 - l1, sub_dir, l2);
|
memcpy(path + l0 - l1, sub_dir, l2);
|
||||||
|
|
||||||
path[l0 - l1 + l2] = '\0';
|
path[l0 - l1 + l2] = '\0';
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* ! HAVE_DLADDR */
|
#endif /* ! HAVE_DLADDR */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue