Bug #4804

IO.pipeとNEWLINE_DECORATOR

Added by Usaku NAKAMURA about 4 years ago. Updated about 4 years ago.

[ruby-dev:43603]
Status:Closed
Priority:Normal
Assignee:Nobuyoshi Nakada
ruby -v:ruby 1.9.3dev (2011-05-31 trunk 31858) [x64-mswin64_100] Backport:

Description

IO.pipeで生成されるIOはDEAFULT_TEXTMODE、すなわちWindowsにおいては
FMODE_TEXTMODEに設定されますが、実際には改行コード変換が行われません。

どうもecflagsにNEWLINE_DECORATOR類を指定するパスが存在しないのでは
ないかと思われるのですが、この辺のコードが複雑すぎて直し方までは
わかりませんでした。

なおこれが原因で、test/test_open3.rbでFailureが起きています。
また、rdocのtestでも2件Failureがあるのですが、おそらく同じ原因では
ないかと思っています。

他のプラットフォームは試してないんですが、おそらく以下のコードで
現象を再現できるのではないかと思います。

r, w = IO.pipe(textmode:true)
w.write "foo\n"
p r.gets # => expect "foo\n", but "foo\r\n"

Associated revisions

Revision 31872
Added by Nobuyoshi Nakada about 4 years ago

  • io.c (io_encoding_set): should honor already set ecflags since it might be set by mode option. fixed #4804

Revision 31872
Added by Nobuyoshi Nakada about 4 years ago

  • io.c (io_encoding_set): should honor already set ecflags since it might be set by mode option. fixed #4804

History

#1 Updated by Nobuyoshi Nakada about 4 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r31872.
Usaku, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • io.c (io_encoding_set): should honor already set ecflags since it might be set by mode option. fixed #4804

Also available in: Atom PDF