LibC: Don't allow pthread_join to return EINTR

This commit is contained in:
Bananymous 2025-08-03 19:33:25 +03:00
parent 4a95343936
commit f197d39aaf
1 changed files with 8 additions and 1 deletions

View File

@ -475,7 +475,14 @@ int pthread_equal(pthread_t t1, pthread_t t2)
int pthread_join(pthread_t thread, void** value_ptr)
{
pthread_testcancel();
return syscall(SYS_PTHREAD_JOIN, thread, value_ptr);
errno = 0;
while (syscall(SYS_PTHREAD_JOIN, thread, value_ptr) == -1 && errno == EINTR)
{
pthread_testcancel();
errno = 0;
}
return errno;
}
pthread_t pthread_self(void)