summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUoti Urpala <uau@mplayer2.org>2011-07-07 23:19:39 +0300
committerUoti Urpala <uau@mplayer2.org>2011-07-07 23:19:39 +0300
commit6794bca0e96ac288eab7248431080afe29152564 (patch)
tree5b146fcd354f39bab4bef119f0809d414c229ca0
parent8a37558c5f62f68235321eb3817e3d55096a9b92 (diff)
downloadmpv-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).
-rw-r--r--talloc.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/talloc.h b/talloc.h
index 5431971655..8c6d405040 100644
--- a/talloc.h
+++ b/talloc.h
@@ -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