Răsfoiți Sursa

make pthread_exit responsible for disabling cancellation

this requirement is tucked away in XSH 2.9.5 Thread Cancellation under
the heading Thread Cancellation Cleanup Handlers.
Rich Felker 10 ani în urmă
părinte
comite
36d8e97223
2 a modificat fișierele cu 2 adăugiri și 3 ștergeri
  1. 0 3
      src/thread/pthread_cancel.c
  2. 2 0
      src/thread/pthread_create.c

+ 0 - 3
src/thread/pthread_cancel.c

@@ -3,9 +3,6 @@
 
 void __cancel()
 {
-	pthread_t self = __pthread_self();
-	self->canceldisable = 1;
-	self->cancelasync = 0;
 	pthread_exit(PTHREAD_CANCELED);
 }
 

+ 2 - 0
src/thread/pthread_create.c

@@ -23,6 +23,8 @@ _Noreturn void __pthread_exit(void *result)
 	pthread_t self = __pthread_self();
 	sigset_t set;
 
+	self->canceldisable = 1;
+	self->cancelasync = 0;
 	self->result = result;
 
 	while (self->cancelbuf) {