Sorry for mistyping in my previous message. Right text is: The bug is NOT shown up if an exception spec of exception raiser exactly matches an exception spec of the virtual function. ---- Lev Assinovsky Aelita Software Corporation O&S InTrust Framework Division, Team Leader ICQ# 165072909 > -----Original Message----- > From: Assinovsky, Lev > Sent: Thursday, March 11, 2004 1:43 PM > To: Eljay Love-Jensen; gcc-help@xxxxxxxxxxx > Subject: RE: Great g++ bug! Local destructor isn't called! > > > If to compile with -fno-enforce-eh-specs my testcase works. > Actually that's very natural. The bug is shown up if > an exception spec of exception raiser exactly matches > an exception spec of the virtual function. > > ---- > Lev Assinovsky > Aelita Software Corporation > O&S InTrust Framework Division, Team Leader > ICQ# 165072909 > > > > -----Original Message----- > > From: Eljay Love-Jensen [mailto:eljay@xxxxxxxxx] > > Sent: Wednesday, March 10, 2004 5:46 PM > > To: Assinovsky, Lev; gcc-help@xxxxxxxxxxx > > Subject: Re: Great g++ bug! Local destructor isn't called! > > > > > > Hi Lev, > > > > I notice that if the throw(int) specification is taken off > the Raiser > > constructor, then the ~Object() is called with -O3. > > > > (I'm using GCC 3.3.1 on CygWin / Windows XP.) > > > > Very odd. Good catch. Have you filed a bug? > > > > BTW, in general, I've found that it's usually best NOT to put > > in throw > > specifications for functions / methods. Ever. (This > > restriction does not > > apply to putting in the "throw() -- I throw nothing, ever" > > specification. But even that should be used with great caution.) > > > > If C++ did exception specifications like how Java does them, > > then that'd be > > a different story. > > > > --Eljay > > > > >