diff options
Diffstat (limited to 'libstdc++-v3/libsupc++/eh_alloc.cc')
-rw-r--r-- | libstdc++-v3/libsupc++/eh_alloc.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libstdc++-v3/libsupc++/eh_alloc.cc b/libstdc++-v3/libsupc++/eh_alloc.cc index 4728bcbf380..3b7319ea235 100644 --- a/libstdc++-v3/libsupc++/eh_alloc.cc +++ b/libstdc++-v3/libsupc++/eh_alloc.cc @@ -147,6 +147,12 @@ __cxxabiv1::__cxa_allocate_exception(std::size_t thrown_size) throw() std::terminate (); } + // We have an uncaught exception as soon as we allocate memory. This + // yields uncaught_exception() true during the copy-constructor that + // initializes the exception object. See Issue 475. + __cxa_eh_globals *globals = __cxa_get_globals (); + globals->uncaughtExceptions += 1; + memset (ret, 0, sizeof (__cxa_exception)); return (void *)((char *)ret + sizeof (__cxa_exception)); |