2002-09-27 Robert Collins <rbtcollins@hotmail.com>
* thread.cc (pthread_key::run_destructor): Run_destructor is not
       const as it needs to set the key value.
       * thread.h (pthread_key::run_destructor): Ditto.
2002-09-27  Robert Collins <rbtcollins@hotmail.com>
       * thread.cc (pthread_key::run_destructor): Follow opengroup algorithm.
       I.e. only run the destructor NON-NULL key values, and reset the key
       to NULL before running the destructor. Reported by Thomas Pfaff.
			
			
This commit is contained in:
		| @@ -1,3 +1,15 @@ | ||||
| 2002-09-27  Robert Collins <rbtcollins@hotmail.com> | ||||
|  | ||||
| 	* thread.cc (pthread_key::run_destructor): Run_destructor is not | ||||
| 	const as it needs to set the key value. | ||||
| 	* thread.h (pthread_key::run_destructor): Ditto. | ||||
|  | ||||
| 2002-09-27  Robert Collins <rbtcollins@hotmail.com> | ||||
|  | ||||
| 	* thread.cc (pthread_key::run_destructor): Follow opengroup algorithm. | ||||
| 	I.e. only run the destructor NON-NULL key values, and reset the key | ||||
| 	to NULL before running the destructor. Reported by Thomas Pfaff. | ||||
|  | ||||
| 2002-09-25  Christopher Faylor  <cgf@redhat.com> | ||||
|  | ||||
| 	* cygrun.c (main): Fix setting of CYGWIN environment variable. | ||||
|   | ||||
| @@ -1035,10 +1035,17 @@ pthread_key::recreateKeyFromBuffer () | ||||
| } | ||||
|  | ||||
| void | ||||
| pthread_key::run_destructor () const | ||||
| pthread_key::run_destructor () | ||||
| { | ||||
|   if (destructor) | ||||
|     destructor (get ()); | ||||
|   if (destructor)  | ||||
|     { | ||||
|       void *oldValue = get(); | ||||
|       if (oldValue) | ||||
| 	{ | ||||
|     	  set (NULL); | ||||
|     	  destructor (oldValue); | ||||
| 	} | ||||
|     } | ||||
| } | ||||
|  | ||||
| /*pshared mutexs: | ||||
|   | ||||
| @@ -212,7 +212,7 @@ private: | ||||
|   void saveKeyToBuffer (); | ||||
|   void recreateKeyFromBuffer (); | ||||
|   void (*destructor) (void *); | ||||
|   void run_destructor () const; | ||||
|   void run_destructor (); | ||||
|   void *fork_buf; | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user