OSDN Git Service

* exceptions.cc (_cygtls::handle_exceptions): When being debugged,
authorcorinna <corinna>
Thu, 28 Feb 2008 17:57:40 +0000 (17:57 +0000)
committercorinna <corinna>
Thu, 28 Feb 2008 17:57:40 +0000 (17:57 +0000)
leave through SetThreadContext, too, to keep exception handler stack
intact.

winsup/cygwin/ChangeLog
winsup/cygwin/exceptions.cc

index f2bf25c..b91c83c 100644 (file)
@@ -1,5 +1,11 @@
 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>
+
        * exceptions.cc (open_stackdumpfile): Add comments.
 
 2008-02-28  Corinna Vinschen  <corinna@vinschen.de>
index 999094d..3b4184d 100644 (file)
@@ -647,7 +647,7 @@ _cygtls::handle_exceptions (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT
          if (try_to_debug (0))
            {
              debugging = true;
-             return 0;
+             goto out;
            }
 
          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 this function.  This should work ok, since a longjmp() out of here has
      to work if linux signal semantics are to be maintained. */
-
+out:
   SetThreadContext (GetCurrentThread (), in);
   return 0; /* Never actually returns.  This is just to keep gcc happy. */
 }