fix double errno-decoding in the old-kernel fallback path of pipe2
authorRich Felker <dalias@aerifal.cx>
Tue, 11 Dec 2012 14:38:38 +0000 (09:38 -0500)
committerRich Felker <dalias@aerifal.cx>
Tue, 11 Dec 2012 14:38:38 +0000 (09:38 -0500)
this bug seems to have caused any failure by pipe2 on such systems to
set errno to 1, rather than the proper error code.

src/unistd/pipe2.c

index 04e0c128d661d55c8d70de2bcb3738e9ea1d29bf..973e8ec3e56aa3063a4b5dae34b3460c8f41d99b 100644 (file)
@@ -8,7 +8,7 @@ int pipe2(int fd[2], int flag)
        if (!flag) return syscall(SYS_pipe, fd);
        int ret = __syscall(SYS_pipe2, fd, flag);
        if (ret != -ENOSYS) return __syscall_ret(ret);
-       ret = syscall(SYS_pipe, fd);
+       ret = __syscall(SYS_pipe, fd);
        if (ret) return __syscall_ret(ret);
        if (flag & O_CLOEXEC) {
                fcntl(fd[0], F_SETFD, FD_CLOEXEC);