This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/15764] New: no cleanup if temporary's dtor terminates with an exception
- From: "boris at kolpackov dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Jun 2004 17:03:26 -0000
- Subject: [Bug c++/15764] New: no cleanup if temporary's dtor terminates with an exception
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
$ cat >test.cxx
#include <cstdlib>
struct a
{
~a ()
{
throw 1;
}
};
int
f (a const& acr = a ())
{
return 1;
}
struct b
{
b (int)
{
}
~b ()
{
std::abort ();
}
};
int
main ()
{
try
{
b b_ (f ());
}
catch (...) {}
}
$ g++ -v
Reading specs from /home/boris/local/lib/gcc/x86_64-unknown-linux-gnu/3.4.0/specs
Configured with: /home/boris/gcc-3.4.0/configure --prefix=/home/boris/local
--enable-__cxa_atexit --enable-languages=c,c++ --enable-long-long
--with-system-zlib --enable-shared --disable-multilib
Thread model: posix
gcc version 3.4.0
$ g++ test.cxx
$ ./a.out
I tried it on Intel C++ 8.0 and Compaq C++ 6.5-040 and they both call b::~b.
-boris
--
Summary: no cleanup if temporary's dtor terminates with an
exception
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: boris at kolpackov dot net
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: x86_64-unknown-linux-gnu
GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15764