Blame view

buildroot/buildroot-2016.08.1/package/duma/0003-fix-C++14.patch 2.19 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
  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"