summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/log4cplus')
-rw-r--r--dev-libs/log4cplus/files/log4cplus-1.2.0-fix-c++14.patch31
-rw-r--r--dev-libs/log4cplus/log4cplus-1.2.0.ebuild2
2 files changed, 33 insertions, 0 deletions
diff --git a/dev-libs/log4cplus/files/log4cplus-1.2.0-fix-c++14.patch b/dev-libs/log4cplus/files/log4cplus-1.2.0-fix-c++14.patch
new file mode 100644
index 000000000000..ccd6e1aadd2e
--- /dev/null
+++ b/dev-libs/log4cplus/files/log4cplus-1.2.0-fix-c++14.patch
@@ -0,0 +1,31 @@
+Make dtors noexcept(false) when compiling in C++11 and above. This avoids
+silent breakage due to the semantic changes between C++98 and C++11.
+See also: https://bugs.gentoo.org/show_bug.cgi?id=595424
+
+--- a/include/log4cplus/hierarchylocker.h
++++ b/include/log4cplus/hierarchylocker.h
+@@ -48,7 +48,11 @@
+ public:
+ // ctor & dtor
+ HierarchyLocker(Hierarchy& h);
+- ~HierarchyLocker();
++ ~HierarchyLocker()
++#if __cplusplus >= 201103L
++ noexcept(false)
++#endif
++ ;
+
+ /**
+ * Calls the <code>resetConfiguration()</code> method on the locked Hierarchy.
+--- a/src/hierarchylocker.cxx
++++ b/src/hierarchylocker.cxx
+@@ -62,6 +62,9 @@
+
+
+ HierarchyLocker::~HierarchyLocker()
++#if __cplusplus >= 201103L
++ noexcept(false)
++#endif
+ {
+ try {
+ for(LoggerList::iterator it=loggerList.begin(); it!=loggerList.end(); ++it) {
diff --git a/dev-libs/log4cplus/log4cplus-1.2.0.ebuild b/dev-libs/log4cplus/log4cplus-1.2.0.ebuild
index 8ad20f852616..4dfaa42fbc28 100644
--- a/dev-libs/log4cplus/log4cplus-1.2.0.ebuild
+++ b/dev-libs/log4cplus/log4cplus-1.2.0.ebuild
@@ -19,6 +19,8 @@ RDEPEND="iconv? ( virtual/libiconv )
DEPEND="virtual/pkgconfig
${RDEPEND}"
+PATCHES=( "${FILESDIR}/${PN}-1.2.0-fix-c++14.patch" )
+
src_configure() {
econf \
--disable-static \