From 43d5590ce13da8a9a962b119748258419959f125 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Fri, 11 Apr 2008 20:36:50 +0000 Subject: [PATCH] Yep, first clear THREAD_FLAGS_SYSCALL, then check whether it is set. That would explain why syscall restarts were broken. In fact there's no reason to check the flag at all, since we know we set it. ftp appears to work again. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24918 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/syscall_restart.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/headers/private/kernel/syscall_restart.h b/headers/private/kernel/syscall_restart.h index 1735e33d59..936912b20d 100644 --- a/headers/private/kernel/syscall_restart.h +++ b/headers/private/kernel/syscall_restart.h @@ -130,13 +130,12 @@ struct SyscallRestartWrapper { ~SyscallRestartWrapper() { - atomic_and(&fThread->flags, ~THREAD_FLAGS_SYSCALL); - if (fResult == B_INTERRUPTED) { // interrupted -- set flag for syscall restart - if ((fThread->flags & THREAD_FLAGS_SYSCALL) != 0) - atomic_or(&fThread->flags, THREAD_FLAGS_RESTART_SYSCALL); + atomic_or(&fThread->flags, THREAD_FLAGS_RESTART_SYSCALL); } + + atomic_and(&fThread->flags, ~THREAD_FLAGS_SYSCALL); } SyscallRestartWrapper& operator=(const Type& other)