1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* io.c (rb_open_file): encoding in mode string was ignored if perm is

specified.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2008-08-18 16:33:46 +00:00
parent 20d2ecafa3
commit 02f43f1bd9
3 changed files with 20 additions and 0 deletions

View file

@ -1,3 +1,8 @@
Tue Aug 19 01:32:37 2008 Tanaka Akira <akr@fsij.org>
* io.c (rb_open_file): encoding in mode string was ignored if perm is
specified.
Tue Aug 19 01:02:19 2008 Tanaka Akira <akr@fsij.org>
* io.c (rb_open_file): don't access argv[-1] by

6
io.c
View file

@ -4506,6 +4506,12 @@ rb_open_file(int argc, VALUE *argv, VALUE io)
fmode = NIL_P(perm) ? 0666 : NUM2UINT(perm);
rb_file_sysopen_internal(io, RSTRING_PTR(fname), flags, fmode);
if (!FIXNUM_P(vmode)) {
rb_io_t *fptr;
GetOpenFile(io, fptr);
rb_io_mode_enc(fptr, StringValueCStr(vmode));
}
}
else {
mode = NIL_P(vmode) ? "r" : StringValueCStr(vmode);

View file

@ -121,6 +121,15 @@ EOT
}
end
def test_open_w_enc_enc_perm
with_tmpdir {
open("tmp", "w:euc-jp:utf-8", 0600) {|f|
assert_equal(Encoding::EUC_JP, f.external_encoding)
assert_equal(Encoding::UTF_8, f.internal_encoding)
}
}
end
def test_stdin
assert_equal(Encoding.default_external, STDIN.external_encoding)
assert_equal(nil, STDIN.internal_encoding)