buildroot/package/duma/0003-fix-C++14.patch

66 lines
2.2 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

dumapp: fix for C++14
With C++14, the way exceptions are specified has changed (somehow, don't
ask me), thus causing build failures:
dumapp.cpp: In function void* operator new(std::size_t):
dumapp.cpp:192:19: error: declaration of void* operator new(std::size_t) throw (std::bad_alloc) has a different exception specifier
void * DUMA_CDECL operator new( DUMA_SIZE_T size )
^~~~~~~~
In file included from dumapp.cpp:39:0:
dumapp.h:91:23: note: from previous declaration void* operator new(std::size_t)
void * DUMA_CDECL operator new(DUMA_SIZE_T) throw(std::bad_alloc);
^~~~~~~~
This is most evident with gcc-6.x, since the default C++ standard has
changed from C++11 to C++14, thus exposing these new failures.
Fix that by guarding the exception handling, a bit like was done
with GRASS GIS (thanks DuckDuckGo):
https://trac.osgeo.org/grass/changeset?old_path=%2F&old=68817&new_path=%2F&new=68818&sfp_email=&sfph_mail=
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
Note: The last commit in DUMA's CVS repo was more than 7 years ago.
I doubt it is still active, so the patch was not sent upstream. :-/
diff -durN duma-2.5.15.orig/dumapp.cpp duma-2.5.15/dumapp.cpp
--- duma-2.5.15.orig/dumapp.cpp 2008-08-03 22:46:06.000000000 +0200
+++ duma-2.5.15/dumapp.cpp 2016-07-10 21:55:22.670386099 +0200
@@ -190,7 +190,9 @@
* (11) = (a) ; ASW
*/
void * DUMA_CDECL operator new( DUMA_SIZE_T size )
+#ifdef DUMA_EXCEPTION_SPECS
throw(std::bad_alloc)
+#endif
{
return duma_new_operator(size, EFA_NEW_ELEM, true DUMA_PARAMS_UK);
}
@@ -254,7 +256,9 @@
* (21) = (a) ; AAW
*/
void * DUMA_CDECL operator new[]( DUMA_SIZE_T size )
+#ifdef DUMA_EXCEPTION_SPECS
throw(std::bad_alloc)
+#endif
{
return duma_new_operator(size, EFA_NEW_ARRAY, true DUMA_PARAMS_UK);
}
diff -durN duma-2.5.15.orig/dumapp.h duma-2.5.15/dumapp.h
--- duma-2.5.15.orig/dumapp.h 2009-04-11 14:41:44.000000000 +0200
+++ duma-2.5.15/dumapp.h 2016-07-10 21:55:22.670386099 +0200
@@ -35,6 +35,10 @@
#include "duma.h"
+#if __cplusplus < 201103L
+ #define DUMA_EXCEPTION_SPECS 1
+#endif
+
/* remove previous macro definitions */
#include "noduma.h"