digitalmars.D.bugs - roll-up of old bugs: auto dtor not called on exception
- Sean Kelly (47/47) Jan 24 2006 C:\code\d\bugs>type 101_2.d
C:\code\d\bugs>type 101_2.d
// This demonstrates a delayed dtor call for auto classes
// when an exception is thrown. the dtor should be called
// when execution leaves func(), not after main exits.
import std.c.stdio;
auto class AutoClass
{
public:
this()
{
printf( "ctor\n" );
throw new Exception( "" );
}
~this()
{
printf( "dtor\n" );
}
}
void func()
{
auto AutoClass c = new AutoClass();
}
void wrap()
{
try
{
func();
}
catch( Exception e )
{
printf( "caught\n" );
}
}
void main()
{
printf( "main begin\n" );
wrap();
printf( "main end\n" );
}
C:\code\d\bugs>dmd 101_2
C:\bin\dmd\bin\..\..\dm\bin\link.exe 101_2,,,user32+kernel32/noi;
C:\code\d\bugs>101_2
main begin
ctor
caught
main end
dtor
Jan 24 2006








Sean Kelly <sean f4.ca>