Project

General

Profile

« Previous | Next » 

Revision 524e6608

Added by normal over 6 years ago

io.c: fix IO.copy_stream on O_APPEND destination on Linux

Linux copy_file_range(2) fails with EBADF if the destination FD
has O_APPEND set. Preserve existing (Ruby <= 2.4) behavior by
falling back to alternative copy mechanisms if this is the case
(instead of raising Errno::EBADF).

  • io.c (nogvl_copy_file_range): do not raise on O_APPEND dst
  • test/ruby/test_io.rb (test_copy_stream_append): new test
    [Feature #13867]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e