Commit c3862806 by Richard Henderson Committed by Richard Henderson

re PR libstdc++/14026 (std::uncaught_exception is true although there are no…

re PR libstdc++/14026 (std::uncaught_exception is true although there are no uncaught exceptions (rethrow, ghost exception))

        PR libstdc++/14026
        * libsupc++/eh_catch.cc (__cxa_begin_catch): Don't adjust
        uncaughtExceptions during nested catch rethrow.
        * testsuite/18_support/14026.cc: New.

From-SVN: r77492
parent fb1b37c7
2004-02-08 Richard Henderson <rth@redhat.com>
PR libstdc++/14026
* libsupc++/eh_catch.cc (__cxa_begin_catch): Don't adjust
uncaughtExceptions during nested catch rethrow.
* testsuite/18_support/14026.cc: New.
2004-02-08 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (assign(const _CharT*, size_type)):
......
// -*- C++ -*- Exception handling routines for catching.
// Copyright (C) 2001, 2003 Free Software Foundation, Inc.
// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
......@@ -65,10 +65,12 @@ __cxa_begin_catch (void *exc_obj_in)
// This exception was rethrown from an immediately enclosing region.
count = -count + 1;
else
count += 1;
{
count += 1;
globals->uncaughtExceptions -= 1;
}
header->handlerCount = count;
globals->uncaughtExceptions -= 1;
if (header != prev)
{
header->nextException = prev;
......
// PR 14026
// 18.6.4 uncaught_exception
#include <cstdlib>
#include <exception>
#include <testsuite_hooks.h>
static void
no_uncaught ()
{
if (std::uncaught_exception ())
abort ();
}
int
main ()
{
try
{
throw 1;
}
catch (...)
{
try
{
throw;
}
catch (...)
{
no_uncaught ();
}
}
no_uncaught ();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment