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>2003-12-07 05:33:31 +0300
committerChristopher Faylor <me@cgf.cx>2003-12-07 05:33:31 +0300
commitfcc47fd0013d63dfe43b81ec26ad10eea5a05cbe (patch)
tree5614c31297a925f3ca7757c86fc1ff82752ae204
parent2b6d15a90833dd2e3aa2aa758813e721fe94a0ca (diff)
* exceptions.cc (_threadinfo::remove): Avoid returning without unlocking
critical section in the (hopefully impossible) case of an unrecognized thread.
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/exceptions.cc15
2 files changed, 14 insertions, 7 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 69df166d4..8b5fef609 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,11 @@
2003-12-06 Christopher Faylor <cgf@redhat.com>
+ * exceptions.cc (_threadinfo::remove): Avoid returning without
+ unlocking critical section in the (hopefully impossible) case of an
+ unrecognized thread.
+
+2003-12-06 Christopher Faylor <cgf@redhat.com>
+
* cygtls.h: Add more "don't parse this" guards.
(_threadinfo::init_thread): Rename from 'init'.
(_threadinfo::init): Declare new function.
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index cb2db165f..aba96ecb0 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -192,13 +192,14 @@ _threadinfo::remove ()
EnterCriticalSection (&protect_linked_list);
for (t = _last_thread; t && t != this; t = t->prev)
continue;
- if (!t)
- return;
- t->prev->next = t->next;
- if (t->next)
- t->next->prev = t->prev;
- if (t == _last_thread)
- _last_thread = t->prev;
+ if (t)
+ {
+ t->prev->next = t->next;
+ if (t->next)
+ t->next->prev = t->prev;
+ if (t == _last_thread)
+ _last_thread = t->prev;
+ }
LeaveCriticalSection (&protect_linked_list);
}