diff options
author | Uoti Urpala <uau@mplayer2.org> | 2011-07-07 23:19:39 +0300 |
---|---|---|
committer | Uoti Urpala <uau@mplayer2.org> | 2011-07-07 23:19:39 +0300 |
commit | 6794bca0e96ac288eab7248431080afe29152564 (patch) | |
tree | 5b146fcd354f39bab4bef119f0809d414c229ca0 /talloc.h | |
parent | 8a37558c5f62f68235321eb3817e3d55096a9b92 (diff) | |
download | mpv-6794bca0e96ac288eab7248431080afe29152564.tar.bz2 mpv-6794bca0e96ac288eab7248431080afe29152564.tar.xz |
build: add a hack to prevent name collision with libtalloc
libsmbclient uses dynamically linked libtalloc.so which has symbols
with names matching those in the internal talloc.c. This name
collision caused a crash under stream_smb when trying to play
anything with smb://. Add a "#pragma GCC visibility" hack to talloc.h
to hide the internal symbols from being visible to the outside
libtalloc.so. Hopefully this doesn't break any platform worse than
possibly causing a compiler warning about an unknown pragma (at least
GCC and clang recognize it).
Diffstat (limited to 'talloc.h')
-rw-r--r-- | talloc.h | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -29,6 +29,14 @@ #include <stdio.h> #include <stdarg.h> +/* HACK: libsmbclient uses dynamically linked libtalloc.so which has + * identically named symbols. This name collision caused a crash under + * stream_smb when trying to play anything with smb://. This hack + * prevents the symbols declared here from being visible to outside + * shared libraries and fixes the crash. + */ +#pragma GCC visibility push(hidden) + /* this is only needed for compatibility with the old talloc */ typedef void TALLOC_CTX; @@ -180,4 +188,6 @@ char *talloc_asprintf(const void *t, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3) char *talloc_asprintf_append(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); char *talloc_asprintf_append_buffer(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); +// end of visibility hack from above +#pragma GCC visibility pop #endif |