Browse Source

fix F_GETOWN return value handling

the fcntl syscall can return a negative value when the command is
F_GETOWN, and this is not an error code but an actual value. thus we
must special-case it and avoid calling __syscall_ret to set errno.
this fix is better than the glibc fix (using F_GETOWN_EX) which only
works on newer kernels and is more complex.
rs-1.0
Rich Felker 15 years ago
parent
commit
8e8ddeff7e
  1. 1
      src/fcntl/fcntl.c

1
src/fcntl/fcntl.c

@ -13,6 +13,7 @@ int fcntl(int fd, int cmd, ...)
va_end(ap);
if (cmd == F_SETFL) arg |= O_LARGEFILE;
if (cmd == F_SETLKW) return syscall_cp(SYS_fcntl, fd, cmd, arg);
if (cmd == F_GETOWN) return __syscall(SYS_fcntl, fd, cmd, arg);
return syscall(SYS_fcntl, fd, cmd, arg);
}

Loading…
Cancel
Save