* exceptions.cc (_cygtls::handle_exceptions): When being debugged,

leave through SetThreadContext, too, to keep exception handler stack
	intact.
This commit is contained in:
Corinna Vinschen 2008-02-28 17:57:42 +00:00
parent 5003a3d1c5
commit 83082b6a68
2 changed files with 8 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2008-02-28 Corinna Vinschen <corinna@vinschen.de>
* exceptions.cc (_cygtls::handle_exceptions): When being debugged,
leave through SetThreadContext, too, to keep exception handler stack
intact.
2008-02-28 Corinna Vinschen <corinna@vinschen.de> 2008-02-28 Corinna Vinschen <corinna@vinschen.de>
* exceptions.cc (open_stackdumpfile): Add comments. * exceptions.cc (open_stackdumpfile): Add comments.

View File

@ -647,7 +647,7 @@ _cygtls::handle_exceptions (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT
if (try_to_debug (0)) if (try_to_debug (0))
{ {
debugging = true; debugging = true;
return 0; goto out;
} }
open_stackdumpfile (); open_stackdumpfile ();
@ -692,7 +692,7 @@ _cygtls::handle_exceptions (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT
to the caller without visiting any of the helpful code installed prior to the caller without visiting any of the helpful code installed prior
to this function. This should work ok, since a longjmp() out of here has to this function. This should work ok, since a longjmp() out of here has
to work if linux signal semantics are to be maintained. */ to work if linux signal semantics are to be maintained. */
out:
SetThreadContext (GetCurrentThread (), in); SetThreadContext (GetCurrentThread (), in);
return 0; /* Never actually returns. This is just to keep gcc happy. */ return 0; /* Never actually returns. This is just to keep gcc happy. */
} }