mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-03 17:56:17 +01:00
gitypelib.c: on macOS, treat @-prefixed shlib paths as absolute
On macOS, @-prefixed shlib paths (@rpath, @executable_path, and @loader_path) need to be treated as absolute. Trying to combine them with a configured library path produces a mangled path that is unresolvable and may cause unintended side effects (such as loading the library from a fall-back location on macOS 12.0.1).
This commit is contained in:
parent
4027d2e12a
commit
c493763ff2
10
gitypelib.c
10
gitypelib.c
@ -2262,7 +2262,17 @@ load_one_shared_library (const char *shlib)
|
|||||||
GSList *p;
|
GSList *p;
|
||||||
GModule *m;
|
GModule *m;
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
/* On macOS, @-prefixed shlib paths (@rpath, @executable_path, @loader_path)
|
||||||
|
need to be treated as absolute; trying to combine them with a
|
||||||
|
configured library path produces a mangled path that is unresolvable
|
||||||
|
and may cause unintended side effects (such as loading the library
|
||||||
|
from a fall-back location on macOS 12.0.1).
|
||||||
|
*/
|
||||||
|
if (!g_path_is_absolute (shlib) && !g_str_has_prefix (shlib, "@"))
|
||||||
|
#else
|
||||||
if (!g_path_is_absolute (shlib))
|
if (!g_path_is_absolute (shlib))
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
/* First try in configured library paths */
|
/* First try in configured library paths */
|
||||||
for (p = library_paths; p; p = p->next)
|
for (p = library_paths; p; p = p->next)
|
||||||
|
Loading…
Reference in New Issue
Block a user