diff options
author | Christopher Faylor <me@cgf.cx> | 2005-12-03 05:01:51 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2005-12-03 05:01:51 +0000 |
commit | 49085f6f16adf9f6cf97e19f94878071cebc49fe (patch) | |
tree | 7f98823b82f09927caffe8ec7a256345ff02cb98 /winsup/cygwin/cygtls.cc | |
parent | 087f4a61d28201ce04d19cce2a1112cc2f8966d4 (diff) | |
download | cygnal-49085f6f16adf9f6cf97e19f94878071cebc49fe.tar.gz cygnal-49085f6f16adf9f6cf97e19f94878071cebc49fe.tar.bz2 cygnal-49085f6f16adf9f6cf97e19f94878071cebc49fe.zip |
* include/exceptions.h (exception_list): Revert previous change. Windows
doesn't care.
(exception_handler): Use real exception_list parameter type rather than void *
* tlsoffsets.h: Regenerate.
* cygtls.h (_cygtls::handle_exceptions): Use real exception_list parameter type
rather than void *.
(handle_threadlist_exception): Ditto.
(init_exception_handler): Ditto.
* cygtls.cc (_cygtls::handle_threadlist_exception ): Ditto.
(_cygtls::init_exception_handler): Add kludge to terminate linked list with a
loop, which seems to solve problem of RtlUnwind causing problems
* exceptions.cc (rtl_unwind): Use real exception_list parameter type rather
than void *.
(_cygtls::handle_exceptions): Ditto.
Diffstat (limited to 'winsup/cygwin/cygtls.cc')
-rw-r--r-- | winsup/cygwin/cygtls.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/winsup/cygwin/cygtls.cc b/winsup/cygwin/cygtls.cc index 1e6ff4dd0..fa755168c 100644 --- a/winsup/cygwin/cygtls.cc +++ b/winsup/cygwin/cygtls.cc @@ -240,7 +240,7 @@ _cygtls::set_siginfo (sigpacket *pack) extern "C" DWORD __stdcall RtlUnwind (void *, void *, void *, DWORD); int -_cygtls::handle_threadlist_exception (EXCEPTION_RECORD *e, void *frame, CONTEXT *c, void *) +_cygtls::handle_threadlist_exception (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *c, void *) { if (e->ExceptionCode != STATUS_ACCESS_VIOLATION) { @@ -281,6 +281,8 @@ _cygtls::init_exception_handler (exception_handler *eh) { el.handler = eh; el.prev = _except_list; + if (!el.prev->prev && !el.prev->handler) + el.prev = ⪙ _except_list = ⪙ } |