Project

General

Profile

Actions

Bug #15199

closed

scanf.rb broken with io from IO.pipe (MinGW or Windows?)

Added by MSP-Greg (Greg L) over 5 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:89271]

Description

scanf.rb seems to be broken when using an io from a pipe.

The following code is used in IO#scanf:

link: https://github.com/ruby/ruby/blob/d4b0efc010a45e904ecdad2dd74374b5c74e61e3/lib/scanf.rb#L661-L664

begin
  seek(start_position + matched_so_far, IO::SEEK_SET)
rescue Errno::ESPIPE
end

if the rescue statement is replaced with:

rescue Errno::ESPIPE, Errno::EINVAL

It seems to work. I assume at some point, a 'pipe' io raised an Errno::ESPIPE error when called with #seek, but trunk & 2.3 respond with Errno::EINVAL...


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #12230: Wrong exception raised when IO.read from a pipe is passed an offset on WindowsClosedActions
Actions #1

Updated by MSP-Greg (Greg L) over 5 years ago

  • Subject changed from scanf.rb broken with io from IO.pipe to scanf.rb broken with io from IO.pipe (MinGW or Windows?)
Actions #2

Updated by nagachika (Tomoyuki Chikanaga) over 5 years ago

  • Backport changed from 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN to 2.3: REQUIRED, 2.4: REQUIRED, 2.5: REQUIRED

Updated by jeremyevans0 (Jeremy Evans) almost 5 years ago

I've tested on Windows and confirmed this is a bug.

I added a pull request upstream to fix this: https://github.com/ruby/scanf/pull/4

If nobody has objections, I'll merge this in about a week.

Updated by usa (Usaku NAKAMURA) over 4 years ago

  • Backport changed from 2.3: REQUIRED, 2.4: REQUIRED, 2.5: REQUIRED to 2.3: REQUIRED, 2.4: REQUIRED, 2.5: DONE

ruby_2_5 r67754 merged revision(s) d118c84b0b9110462e479487ffaf175a75e5718e.

Actions #6

Updated by nobu (Nobuyoshi Nakada) over 4 years ago

  • Related to Bug #12230: Wrong exception raised when IO.read from a pipe is passed an offset on Windows added
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0