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
This commit is contained in:
Ingo Weinhold
2008-04-11 20:36:50 +00:00
parent 3118b3a7cb
commit 43d5590ce1
+3 -4
View File
@@ -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<Type>& operator=(const Type& other)