diff options
author | Christopher Faylor <me@cgf.cx> | 2008-02-27 17:16:46 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2008-02-27 17:16:46 +0000 |
commit | 8ba248a94b612aa0c826204904ed5b1480397362 (patch) | |
tree | af9a90a456da6131d2a922f839c01ae53795e146 /winsup/cygwin/cygtls.cc | |
parent | ca504a0dee89cd4ca92db404601f3a5d0fdef497 (diff) | |
download | cygnal-8ba248a94b612aa0c826204904ed5b1480397362.tar.gz cygnal-8ba248a94b612aa0c826204904ed5b1480397362.tar.bz2 cygnal-8ba248a94b612aa0c826204904ed5b1480397362.zip |
* cygtls.cc (_cygtls::handle_threadlist_exception): Make it clear that the
function never actually returns.
* exceptions.cc (_cygtls::handle_exceptions): Jump out of function rather than
returning to avoid meddling by previously installed exception handlers.
Diffstat (limited to 'winsup/cygwin/cygtls.cc')
-rw-r--r-- | winsup/cygwin/cygtls.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/winsup/cygwin/cygtls.cc b/winsup/cygwin/cygtls.cc index af2723e95..310f2e637 100644 --- a/winsup/cygwin/cygtls.cc +++ b/winsup/cygwin/cygtls.cc @@ -221,7 +221,7 @@ _cygtls::set_siginfo (sigpacket *pack) infodata = pack->si; } -extern "C" DWORD __stdcall RtlUnwind (void *, void *, void *, DWORD); +extern "C" DWORD __stdcall RtlUnwind (void *, void *, void *, DWORD) __attribute__ ((noreturn)); int _cygtls::handle_threadlist_exception (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *c, void *) { @@ -248,7 +248,7 @@ _cygtls::handle_threadlist_exception (EXCEPTION_RECORD *e, exception_list *frame cygheap->threadlist[threadlist_ix]->remove (INFINITE); threadlist_ix = 0; RtlUnwind (frame, threadlist_exception_return, e, 0); - return 0; + /* Never returns */ } /* Set up the exception handler for the current thread. The x86 uses segment |