From: weiku AT UTKUX1 DOT UTK DOT EDU ("Wei Ku") Subject: Re: exception handling bug in b18 g++ 29 Jul 1997 11:42:44 -0700 Approved: cygnus DOT gnu-win32 AT cygnus DOT com Distribution: cygnus Message-ID: <199707291431.KAA41618.cygnus.gnu-win32@solid.ssd.ornl.gov> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Original-To: , "gnu-win32 Mailing List" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 4.71.1008.3 X-MimeOle: Produced By Microsoft MimeOLE Engine V4.71.1008.3 Original-Sender: owner-gnu-win32 AT cygnus DOT com Can g++ treat 'exception handling' correctly ? I thought it can not even in UNIX machine. Sincerely, Wei Ku *************************************** Department of Physics and Astronomy The University of Tennessee 1408 Circle Drive Knoxville, Tennessee 37996-1200 weiku AT utkux DOT utcc DOT utk DOT edu --------------------------------------- Solid State Division Oak Ridge National Laboratory P.O.Box 2008 Oak Ridge, TN 37831-6032 Phone: (423) 574-5795 Fax: (423) 574-4143 weiku AT solid DOT ssd DOT ornl DOT gov *************************************** -----Original Message----- From: Benjamin Sean Scarlet To: gnu-win32 Mailing List Date: Tuesday, July 29, 1997 8:34 AM Subject: exception handling bug in b18 g++ >I seem to have found some odd bug in exception handling: after >a catch block in a member function, the this pointer is corrupted: > >--------------------------test.C------------------------------------ >#include > >class X >{ > int x; >public: > void foo(); >}; > >void printit(void *p) >{ > cerr << p << endl; >} > >void X::foo() >{ > printit(this); > try > > printit(this); > throw 1; > } > catch(int) > { > printit(this); > } > printit(this); >} > >main() >{ > X x; > x.foo(); >} >---------------------------------------------------------------------- >When I try this, I get: > >bash$ g++ -fexceptions test.C -o test >bash$ ./test >0x241f464 >0x241f464 >0x241f464 >0x40c0f8 > >As a side note, a possible quick fix is to turn on optimization: >bash$ g++ -O -fexceptions test.C -o test >bash$ ./test >0x241f464 >0x241f464 >0x241f464 >0x241f464 > > Benjamin Scarlet > scarlet AT mit DOT edu > >----------------------------------------------------------------------- >Configuration particulars: >Pentium II, Windows NT 4.0 (service pack 3) > >An even further aside: I don't know how extensive the Cygnus changes to >the g++ exception handling code are, so I figured it wouldn't hurt to >try this >program on a Linux box with vanilla gcc-2.7.2.1: There I get no >problem. >- >For help on using this list (especially unsubscribing), send a message to >"gnu-win32-request AT cygnus DOT com" with one line of text: "help". > - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".