diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index 7c3cf8103..c612a3684 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -1238,14 +1238,14 @@ public: friend DWORD WINAPI flush_async_io (void *); }; -class fhandler_pipe: public fhandler_base_overlapped +class fhandler_pipe: public fhandler_base { private: pid_t popen_pid; + size_t max_atomic_write; public: fhandler_pipe (); - bool ispipe() const { return true; } void set_popen_pid (pid_t pid) {popen_pid = pid;} @@ -1272,7 +1272,6 @@ public: { pc.free_strings (); *this = *reinterpret_cast (x); - atomic_write_buf = NULL; _copy_from_reset_helper (); } diff --git a/winsup/cygwin/fhandler_pipe.cc b/winsup/cygwin/fhandler_pipe.cc index 7ab73a9d3..65ef70c25 100644 --- a/winsup/cygwin/fhandler_pipe.cc +++ b/winsup/cygwin/fhandler_pipe.cc @@ -21,7 +21,7 @@ details. */ #include "shared_info.h" fhandler_pipe::fhandler_pipe () - : fhandler_base_overlapped (), popen_pid (0) + : fhandler_base (), popen_pid (0) { max_atomic_write = DEFAULT_PIPEBUFSIZE; need_fork_fixup (true); @@ -54,9 +54,8 @@ fhandler_pipe::init (HANDLE f, DWORD a, mode_t mode, int64_t uniq_id) set_ino (uniq_id); set_unique_id (uniq_id | !!(mode & GENERIC_WRITE)); if (opened_properly) - setup_overlapped (); - else - destroy_overlapped (); + /* ... */ + ; return 1; } @@ -192,7 +191,7 @@ fhandler_pipe::dup (fhandler_base *child, int flags) ftp->set_popen_pid (0); int res; - if (get_handle () && fhandler_base_overlapped::dup (child, flags)) + if (get_handle () && fhandler_base::dup (child, flags)) res = -1; else res = 0; @@ -359,7 +358,7 @@ fhandler_pipe::create (fhandler_pipe *fhs[2], unsigned psize, int mode) int res = -1; int64_t unique_id; - int ret = create (sa, &r, &w, psize, NULL, FILE_FLAG_OVERLAPPED, &unique_id); + int ret = create (sa, &r, &w, psize, NULL, 0, &unique_id); if (ret) __seterrno_from_win_error (ret); else if ((fhs[0] = (fhandler_pipe *) build_fh_dev (*piper_dev)) == NULL)