diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-12-22 06:21:14 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-12-22 06:21:14 +0000 |
commit | 2865f3a3a6839eea0a85b71eba803fa94381b866 (patch) | |
tree | 49210c7b0857630d64bb152cc536f9f0111e1380 /string.c | |
parent | e288324760e5e5b57f616d7160565ec101d2c777 (diff) | |
download | ruby-2865f3a3a6839eea0a85b71eba803fa94381b866.tar.gz |
string.c: no exception on dummy encoding
* string.c (str_compat_and_valid): as scrub does nothing for dummy
encoding string now, incompatible encoding is not a matter.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 13 |
1 files changed, 3 insertions, 10 deletions
@@ -8639,18 +8639,11 @@ str_compat_and_valid(VALUE str, rb_encoding *enc) if (cr == ENC_CODERANGE_BROKEN) { rb_raise(rb_eArgError, "replacement must be valid byte sequence '%+"PRIsVALUE"'", str); } - else if (cr == ENC_CODERANGE_7BIT) { - rb_encoding *e = STR_ENC_GET(str); - if (!rb_enc_asciicompat(enc)) { - rb_raise(rb_eEncCompatError, "incompatible character encodings: %s and %s", - rb_enc_name(enc), rb_enc_name(e)); - } - } - else { /* ENC_CODERANGE_VALID */ + else { rb_encoding *e = STR_ENC_GET(str); - if (enc != e) { + if (cr == ENC_CODERANGE_7BIT ? rb_enc_mbminlen(enc) != 1 : enc != e) { rb_raise(rb_eEncCompatError, "incompatible character encodings: %s and %s", - rb_enc_name(enc), rb_enc_name(e)); + rb_enc_name(enc), rb_enc_name(e)); } } return str; |