Project

General

Profile

Bug #12230

Wrong exception raised when IO.read from a pipe is passed an offset on Windows

Added by vais (Vais Salikhov) over 3 years ago. Updated 29 days ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]
[ruby-core:74724]

Description

When IO.read from a pipe is passed an offset, the expected exception is Errno::ESPIPE, but on Windows Invalid argument (Errno::EINVAL) is raised instead:

C:\Users\Administrator\Desktop>C:\Ruby\ruby-2.2.4-i386-mingw32\bin\ruby.exe -ve "p IO.read('|cmd.exe /C echo hello', 1, 1)"
ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]
The process tried to write to a nonexistent pipe.
-e:1:in `read': Invalid argument (Errno::EINVAL)
        from -e:1:in `<main>'

Files

win32-seek-espipe.patch (1.17 KB) win32-seek-espipe.patch jeremyevans0 (Jeremy Evans), 07/24/2019 06:43 PM

Associated revisions

Revision 0a63c4d5
Added by nobu (Nobuyoshi Nakada) 29 days ago

Fix errno at seeking socket/pipe on Windows

[Bug #12230]

History

Updated by jeremyevans0 (Jeremy Evans) 29 days ago

I think we should fix this to make the behavior on Windows consistent with other operating systems. Attached is a patch that attempts to do so. I'm not sure if the approach the patch takes is the best way to fix this. I also don't have a compilation environment on Windows, so a committer that does should probably check that the patch works.

#2

Updated by nobu (Nobuyoshi Nakada) 29 days ago

  • Status changed from Open to Closed

Applied in changeset git|0a63c4d5fbbbfae9aba92c78e39b1521b90f1b06.


Fix errno at seeking socket/pipe on Windows

[Bug #12230]

Also available in: Atom PDF