From 17248a467e6af5e1c55c91668c2fe2fae9b6d54d Mon Sep 17 00:00:00 2001 From: mame Date: Thu, 29 May 2008 13:30:09 +0000 Subject: [PATCH] * io.c (argf_external_encoding, argf_internal_encoding): fix SEGV by ARGF.external_encoding. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ io.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 03468dc571..17220f5ae5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu May 29 22:29:39 2008 Yusuke Endoh + + * io.c (argf_external_encoding, argf_internal_encoding): fix SEGV by + ARGF.external_encoding. + Wed May 28 18:05:28 2008 Akinori MUSHA * array.c (rb_ary_nitems, Init_Array): Axe Array#nitems(). diff --git a/io.c b/io.c index 0b4b4b64b2..e4a0c21c19 100644 --- a/io.c +++ b/io.c @@ -6942,13 +6942,19 @@ rb_io_set_encoding(int argc, VALUE *argv, VALUE io) static VALUE argf_external_encoding(VALUE argf) { - return rb_io_external_encoding(current_file); + if (!RTEST(current_file)) { + return rb_enc_from_encoding(rb_default_external_encoding()); + } + return rb_io_external_encoding(rb_io_check_io(current_file)); } static VALUE argf_internal_encoding(VALUE argf) { - return rb_io_internal_encoding(current_file); + if (!RTEST(current_file)) { + return rb_enc_from_encoding(rb_default_external_encoding()); + } + return rb_io_internal_encoding(rb_io_check_io(current_file)); } static VALUE