소스 검색

fix invalid pointer in synccall (multithread setuid, etc.)

the head pointer was not being reset between calls to synccall, so any
use of this interface more than once would build the linked list
incorrectly, keeping the (now invalid) list nodes from the previous
call.
Rich Felker 11 년 전
부모
커밋
a731e4103b
1개의 변경된 파일1개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      src/thread/synccall.c

+ 1 - 0
src/thread/synccall.c

@@ -58,6 +58,7 @@ void __synccall(void (*func)(void *), void *ctx)
 	sem_init(&chaindone, 0, 0);
 	sem_init(&chainlock, 0, 1);
 	chainlen = 0;
+	head = 0;
 	callback = func;
 	context = ctx;