diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-29 09:19:15 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-29 09:19:15 +0000 |
commit | daa622aed079b4434e607820d7577b4a7d4f2bfc (patch) | |
tree | 5a7cfc28983ed2e26680686bc23eb47de95fa813 /string.c | |
parent | deff2a3e247d9dd42ac55d9ecfeb7f567aac9fd4 (diff) | |
download | ruby-daa622aed079b4434e607820d7577b4a7d4f2bfc.tar.gz |
* 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
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -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); } |