diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2018-06-15 11:20:42 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2018-06-15 11:20:42 +0300 |
commit | 4399253c2e84ce8bdddab1bd8b551fe9862e8807 (patch) | |
tree | 65d293ed122316a7c9614cbad37b8dc7b0ad2f57 /gc_cpp.cc | |
parent | 38b46be3ed7dd89bcda5418a67b01edc6dfd4a9c (diff) | |
download | bdwgc-4399253c2e84ce8bdddab1bd8b551fe9862e8807.tar.gz |
Do not specify throw(bad_alloc) in gc_cpp.h
(fix of commit cb1194d17)
* gc_cpp.cc (GC_NEW_DELETE_NEED_THROW, GC_DECL_NEW_THROW): Move from
gc_cpp.h.
* include/gc_cpp.h (gc::new, new): Remove GC_DECL_NEW_THROW specifier.
* include/gc_cpp.h [GC_OPERATOR_NEW_ARRAY] (gc::new[], new[]):
Likewise.
Diffstat (limited to 'gc_cpp.cc')
-rw-r--r-- | gc_cpp.cc | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -29,8 +29,20 @@ built-in "new" and "delete". #include "gc_cpp.h" +#if !defined(GC_NEW_DELETE_THROW_NOT_NEEDED) \ + && !defined(GC_NEW_DELETE_NEED_THROW) && GC_GNUC_PREREQ(4, 2) \ + && (__cplusplus < 201103L || defined(__clang__)) +# define GC_NEW_DELETE_NEED_THROW +#endif + #if !defined(_MSC_VER) && !defined(__DMC__) +# ifdef GC_NEW_DELETE_NEED_THROW +# define GC_DECL_NEW_THROW throw(std::bad_alloc) +# else +# define GC_DECL_NEW_THROW /* empty */ +# endif + void* operator new(size_t size) GC_DECL_NEW_THROW { void* obj = GC_MALLOC_UNCOLLECTABLE(size); GC_OP_NEW_OOM_CHECK(obj); |