* exceptions.cc (_threadinfo::remove): Avoid a linked list walk.
This commit is contained in:
		| @@ -1,3 +1,7 @@ | ||||
| 2003-12-06  Christopher Faylor  <cgf@redhat.com> | ||||
|  | ||||
| 	* exceptions.cc (_threadinfo::remove): Avoid a linked list walk. | ||||
|  | ||||
| 2003-12-06  Christopher Faylor  <cgf@redhat.com> | ||||
|  | ||||
| 	* cygtls.h (_threadinfo::find_tls): New function. | ||||
|   | ||||
| @@ -188,17 +188,15 @@ _threadinfo::init_thread (void *) | ||||
| void | ||||
| _threadinfo::remove () | ||||
| { | ||||
|   _threadinfo *t; | ||||
|   EnterCriticalSection (&protect_linked_list); | ||||
|   for (t = _last_thread; t && t != this; t = t->prev) | ||||
|     continue; | ||||
|   if (t) | ||||
|   if (prev) | ||||
|     { | ||||
|       t->prev->next = t->next; | ||||
|       if (t->next) | ||||
| 	t->next->prev = t->prev; | ||||
|       if (t == _last_thread) | ||||
| 	_last_thread = t->prev; | ||||
|       prev->next = next; | ||||
|       if (next) | ||||
| 	next->prev = prev; | ||||
|       if (this == _last_thread) | ||||
| 	_last_thread = prev; | ||||
|       prev = next = NULL; | ||||
|     } | ||||
|   LeaveCriticalSection (&protect_linked_list); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user