aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/libsupc++/eh_throw.cc
diff options
context:
space:
mode:
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
commit99b8e7f1cc78f3ddabb89dfb5d6cb7cac3aff14f (patch)
treee4720d039c042b7cd89f8a75f256c697ae8b5493 /libstdc++-v3/libsupc++/eh_throw.cc
parent964944fc854c1dd723f7b8150d0deac634aabdbb (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.cc13
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.