From dc5c4cb1ee92a80e3a5b2acabb700317edf10c4e Mon Sep 17 00:00:00 2001 From: "Jason E. Hale" Date: Mon, 19 Sep 2016 23:18:59 +0000 Subject: [PATCH] Add visibility to C++ exceptions to prevent crashes with applications using libkcddb. PR: 211630 Submitted by: Adriaan de Groot --- audio/libmusicbrainz5/Makefile | 1 + .../patch-musicbrainz5-httpfetch-h.patch | 81 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 audio/libmusicbrainz5/files/patch-musicbrainz5-httpfetch-h.patch diff --git a/audio/libmusicbrainz5/Makefile b/audio/libmusicbrainz5/Makefile index bac4d179e36d..3003c8d9e7ad 100644 --- a/audio/libmusicbrainz5/Makefile +++ b/audio/libmusicbrainz5/Makefile @@ -2,6 +2,7 @@ PORTNAME= libmusicbrainz PORTVERSION= 5.1.0 +PORTREVISION= 1 DISTVERSIONPREFIX= release- CATEGORIES= audio PKGNAMESUFFIX= 5 diff --git a/audio/libmusicbrainz5/files/patch-musicbrainz5-httpfetch-h.patch b/audio/libmusicbrainz5/files/patch-musicbrainz5-httpfetch-h.patch new file mode 100644 index 000000000000..59dbd7b423ae --- /dev/null +++ b/audio/libmusicbrainz5/files/patch-musicbrainz5-httpfetch-h.patch @@ -0,0 +1,81 @@ +--- include/musicbrainz5/HTTPFetch.h.orig 2016-08-06 17:10:23.956575000 +0200 ++++ include/musicbrainz5/HTTPFetch.h 2016-08-06 17:26:10.934640000 +0200 +@@ -29,11 +29,23 @@ + #include + #include + ++// Visibility patch derived from https://gcc.gnu.org/wiki/Visibility , ++// extended for clang support. ++#if (__clang__) || (__GNUC__ >= 4) ++ #define DLL_PUBLIC __attribute__ ((visibility ("default"))) ++ #define DLL_LOCAL __attribute__ ((visibility ("hidden"))) ++#else ++ #define DLL_PUBLIC ++ #define DLL_LOCAL ++#endif ++ ++ ++ + namespace MusicBrainz5 + { + class CHTTPFetchPrivate; + +- class CExceptionBase: public std::exception ++ class DLL_PUBLIC CExceptionBase: public std::exception + { + public: + CExceptionBase(const std::string& ErrorMessage, const std::string& Exception) +@@ -60,7 +72,7 @@ + * Exception thrown when an error occurs connecting to web service + */ + +- class CConnectionError: public CExceptionBase ++ class DLL_PUBLIC CConnectionError: public CExceptionBase + { + public: + CConnectionError(const std::string& ErrorMessage) +@@ -73,7 +85,7 @@ + * Exception thrown when a connection to the web service times out + */ + +- class CTimeoutError: public CExceptionBase ++ class DLL_PUBLIC CTimeoutError: public CExceptionBase + { + public: + CTimeoutError(const std::string& ErrorMessage) +@@ -86,7 +98,7 @@ + * Exception thrown when an authentication error occurs + */ + +- class CAuthenticationError: public CExceptionBase ++ class DLL_PUBLIC CAuthenticationError: public CExceptionBase + { + public: + CAuthenticationError(const std::string& ErrorMessage) +@@ -99,7 +111,7 @@ + * Exception thrown when an error occurs fetching data + */ + +- class CFetchError: public CExceptionBase ++ class DLL_PUBLIC CFetchError: public CExceptionBase + { + public: + CFetchError(const std::string& ErrorMessage) +@@ -112,7 +124,7 @@ + * Exception thrown when an invalid request is made + */ + +- class CRequestError: public CExceptionBase ++ class DLL_PUBLIC CRequestError: public CExceptionBase + { + public: + CRequestError(const std::string& ErrorMessage) +@@ -125,7 +137,7 @@ + * Exception thrown when the requested resource is not found + */ + +- class CResourceNotFoundError: public CExceptionBase ++ class DLL_PUBLIC CResourceNotFoundError: public CExceptionBase + { + public: + CResourceNotFoundError(const std::string& ErrorMessage)