diff options
author | (no author) <(no author)@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-06-24 17:49:25 +0000 |
---|---|---|
committer | (no author) <(no author)@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-06-24 17:49:25 +0000 |
commit | 99b8e7f1cc78f3ddabb89dfb5d6cb7cac3aff14f (patch) | |
tree | e4720d039c042b7cd89f8a75f256c697ae8b5493 /libstdc++-v3/libsupc++/eh_throw.cc | |
parent | 964944fc854c1dd723f7b8150d0deac634aabdbb (diff) |
This commit was manufactured by cvs2svn to create taghammer-3_3-merge-20030624
'hammer-3_3-merge-20030624'.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/tags/hammer-3_3-merge-20030624@68434 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/libsupc++/eh_throw.cc')
-rw-r--r-- | libstdc++-v3/libsupc++/eh_throw.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libstdc++-v3/libsupc++/eh_throw.cc b/libstdc++-v3/libsupc++/eh_throw.cc index f20368a13f6..0e1306637bf 100644 --- a/libstdc++-v3/libsupc++/eh_throw.cc +++ b/libstdc++-v3/libsupc++/eh_throw.cc @@ -1,5 +1,5 @@ // -*- C++ -*- Exception handling routines for throwing. -// Copyright (C) 2001 Free Software Foundation, Inc. +// Copyright (C) 2001, 2003 Free Software Foundation, Inc. // // This file is part of GNU CC. // @@ -90,12 +90,19 @@ __cxa_rethrow () if (header) { // Tell __cxa_end_catch this is a rethrow. - header->handlerCount = -header->handlerCount; + if (header->unwindHeader.exception_class != __gxx_exception_class) + globals->caughtExceptions = 0; + else + header->handlerCount = -header->handlerCount; #ifdef _GLIBCPP_SJLJ_EXCEPTIONS - _Unwind_SjLj_RaiseException (&header->unwindHeader); + _Unwind_SjLj_Resume_or_Rethrow (&header->unwindHeader); #else +#ifdef _LIBUNWIND_STD_ABI _Unwind_RaiseException (&header->unwindHeader); +#else + _Unwind_Resume_or_Rethrow (&header->unwindHeader); +#endif #endif // Some sort of unwinding error. Note that terminate is a handler. |