svn commit: r197477 - head/lib/libthr/thread
David Xu
davidxu at FreeBSD.org
Fri Sep 25 00:15:30 UTC 2009
Author: davidxu
Date: Fri Sep 25 00:15:30 2009
New Revision: 197477
URL: http://svn.freebsd.org/changeset/base/197477
Log:
don't report error if key was deleted.
PR: threads/135462
Modified:
head/lib/libthr/thread/thr_spec.c
Modified: head/lib/libthr/thread/thr_spec.c
==============================================================================
--- head/lib/libthr/thread/thr_spec.c Fri Sep 25 00:03:13 2009 (r197476)
+++ head/lib/libthr/thread/thr_spec.c Fri Sep 25 00:15:30 2009 (r197477)
@@ -131,9 +131,19 @@ _thread_cleanupspecific(void)
curthread->specific[key].data = NULL;
curthread->specific_data_count--;
}
+ else if (curthread->specific[key].data != NULL) {
+ /*
+ * This can happen if the key is deleted via
+ * pthread_key_delete without first setting the value
+ * to NULL in all threads. POSIX says that the
+ * destructor is not invoked in this case.
+ */
+ curthread->specific[key].data = NULL;
+ curthread->specific_data_count--;
+ }
/*
- * If there is a destructore, call it
+ * If there is a destructor, call it
* with the key table entry unlocked:
*/
if (destructor != NULL) {
More information about the svn-src-all
mailing list