summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/cygtls.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2009-07-17 16:54:21 +0000
committerChristopher Faylor <me@cgf.cx>2009-07-17 16:54:21 +0000
commitd2445fa2cc4f8ce1021e75e1a690083ea6b0db7e (patch)
treeb34ea46eb2ab3d6045053d01ab167308e0906544 /winsup/cygwin/cygtls.cc
parent8319377680efac1de4ee3c1dee37c1494042304b (diff)
downloadcygnal-d2445fa2cc4f8ce1021e75e1a690083ea6b0db7e.tar.gz
cygnal-d2445fa2cc4f8ce1021e75e1a690083ea6b0db7e.tar.bz2
cygnal-d2445fa2cc4f8ce1021e75e1a690083ea6b0db7e.zip
* cygtls.cc (_cygtls::init_exception_handler): Avoid adding our exception
handler twice.
Diffstat (limited to 'winsup/cygwin/cygtls.cc')
-rw-r--r--winsup/cygwin/cygtls.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/winsup/cygwin/cygtls.cc b/winsup/cygwin/cygtls.cc
index 1b1ca114b..f474d9b35 100644
--- a/winsup/cygwin/cygtls.cc
+++ b/winsup/cygwin/cygtls.cc
@@ -228,6 +228,9 @@ extern exception_list *_except_list asm ("%fs:0");
void
_cygtls::init_exception_handler (exception_handler *eh)
{
+ for (exception_list *e = _except_list; e->prev != NULL && e->prev != (exception_list *)-1; e = e->prev)
+ if (e == &el)
+ return;
el.handler = eh;
/* Apparently Windows stores some information about an exception and tries
to figure out if the SEH which returned 0 last time actually solved the