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 04e0c12..973e8ec 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);