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:
parent
39bd4d5016
commit
da6a08decb
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue