summaryrefslogtreecommitdiffstats
path: root/contrib/libstdc++/libsupc++
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2005-06-03 03:29:38 +0000
committerkan <kan@FreeBSD.org>2005-06-03 03:29:38 +0000
commit3b6c93380e20c56b8151f9c6fc3916670b987df5 (patch)
treec4e455c4fe8d2a3ed1d621536386e3e252ad36bc /contrib/libstdc++/libsupc++
parent2156e40a831a8e0ab68e4bc091c2940bf46ca6df (diff)
downloadFreeBSD-src-3b6c93380e20c56b8151f9c6fc3916670b987df5.zip
FreeBSD-src-3b6c93380e20c56b8151f9c6fc3916670b987df5.tar.gz
Gcc 3.4.4 C++ support bits.
Diffstat (limited to 'contrib/libstdc++/libsupc++')
-rw-r--r--contrib/libstdc++/libsupc++/eh_globals.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/contrib/libstdc++/libsupc++/eh_globals.cc b/contrib/libstdc++/libsupc++/eh_globals.cc
index 4276022..66971fe 100644
--- a/contrib/libstdc++/libsupc++/eh_globals.cc
+++ b/contrib/libstdc++/libsupc++/eh_globals.cc
@@ -48,7 +48,17 @@ static void
get_globals_dtor (void *ptr)
{
if (ptr)
- std::free (ptr);
+ {
+ __cxa_exception *exn, *next;
+ exn = ((__cxa_eh_globals *) ptr)->caughtExceptions;
+ while (exn)
+ {
+ next = exn->nextException;
+ _Unwind_DeleteException (&exn->unwindHeader);
+ exn = next;
+ }
+ std::free (ptr);
+ }
}
static void
OpenPOWER on IntegriCloud