Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-12-03 08:01:51 +0300
committerChristopher Faylor <me@cgf.cx>2005-12-03 08:01:51 +0300
commit49085f6f16adf9f6cf97e19f94878071cebc49fe (patch)
tree7f98823b82f09927caffe8ec7a256345ff02cb98 /winsup/cygwin/cygtls.cc
parent087f4a61d28201ce04d19cce2a1112cc2f8966d4 (diff)
* 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.cc4
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 = &el;
_except_list = &el;
}