소스 검색

fix incorrect allocation failure check in pthread_create

mmap returns MAP_FAILED not 0 because some idiot thought the ability
to mmap the null pointer page would be a good idea...
Rich Felker 13 년 전
부모
커밋
3f39c9b313
1개의 변경된 파일1개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      src/thread/pthread_create.c

+ 1 - 1
src/thread/pthread_create.c

@@ -102,7 +102,7 @@ int pthread_create(pthread_t *res, const pthread_attr_t *attr, void *(*entry)(vo
 	}
 	size += __pthread_tsd_size;
 	map = mmap(0, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0);
-	if (!map) return EAGAIN;
+	if (map == MAP_FAILED) return EAGAIN;
 	if (guard) mprotect(map, guard, PROT_NONE);
 
 	tsd = map + size - __pthread_tsd_size;