| 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" |
| |