diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-22 12:15:56 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-22 12:15:56 +0000 |
commit | bdb14b5bb6e5ed627dad1bb68c49f47f58d36c9b (patch) | |
tree | 7f8ad9dee96e81535db7cb0532e74bb0e1d3919c | |
parent | bc2fb51c5eb8c7010957cc8f3c8ed7e066c8ea51 (diff) | |
download | ruby-bdb14b5bb6e5ed627dad1bb68c49f47f58d36c9b.tar.gz |
* string.c (rb_enc_cr_str_copy): check string's coderange is 7bit or
valid.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | string.c | 13 |
2 files changed, 16 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Fri Feb 22 21:12:42 2008 NARUSE, Yui <naruse@ruby-lang.org> + + * string.c (rb_enc_cr_str_copy): check string's coderange is 7bit or + valid. + Fri Feb 22 19:50:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org> * bignum.c (BIGZEROP): fix for longer Bignum zeros. [ruby-Bugs-17454] @@ -215,8 +215,17 @@ void rb_enc_cr_str_copy(VALUE dest, VALUE src) { rb_enc_copy(dest, src); - if (!is_broken_string(src)) - ENC_CODERANGE_SET(dest, ENC_CODERANGE(src)); + switch (ENC_CODERANGE(src)) { + case ENC_CODERANGE_7BIT: + ENC_CODERANGE_SET(dest, ENC_CODERANGE_7BIT); + break; + case ENC_CODERANGE_VALID: + if (search_nonascii(RSTRING_PTR(dest), RSTRING_END(dest))) + ENC_CODERANGE_SET(dest, ENC_CODERANGE_VALID); + else + ENC_CODERANGE_SET(dest, ENC_CODERANGE_7BIT); + break; + } } void |