From daa622aed079b4434e607820d7577b4a7d4f2bfc Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 29 Feb 2008 09:19:15 +0000 Subject: * time.c (time_strftime): format should be ascii compatible. * parse.y (rb_intern3): non ASCII compatible symbols. * re.c (rb_reg_regsub): add encoding check. * string.c (rb_str_chomp_bang): ditto. * test/ruby/test_utf16.rb (TestUTF16::test_chomp): raises exception. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'string.c') diff --git a/string.c b/string.c index ffae4518e9..1b88ded7b1 100644 --- a/string.c +++ b/string.c @@ -5273,6 +5273,7 @@ rb_str_chomp_bang(int argc, VALUE *argv, VALUE str) rs = rb_rs; if (rs == rb_default_rs) { smart_chomp: + rb_enc_check(str, rs); rb_str_modify(str); if (RSTRING_PTR(str)[len-1] == '\n') { STR_DEC_LEN(str); @@ -5648,6 +5649,11 @@ rb_str_scan(VALUE str, VALUE pat) static VALUE rb_str_hex(VALUE str) { + rb_encoding *enc = rb_enc_get(str); + + if (!rb_enc_asciicompat(enc)) { + rb_raise(rb_eArgError, "ASCII incompatible encoding: %s", rb_enc_name(enc)); + } return rb_str_to_inum(str, 16, Qfalse); } @@ -5669,6 +5675,11 @@ rb_str_hex(VALUE str) static VALUE rb_str_oct(VALUE str) { + rb_encoding *enc = rb_enc_get(str); + + if (!rb_enc_asciicompat(enc)) { + rb_raise(rb_eArgError, "ASCII incompatible encoding: %s", rb_enc_name(enc)); + } return rb_str_to_inum(str, -8, Qfalse); } -- cgit v1.2.3