diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-02 11:46:40 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-02 11:46:40 +0000 |
commit | bd421aa2d25aa73c83642a8f5af8fa16b794a3b6 (patch) | |
tree | d4e528d553256bdef37711ce58dba2705ad3df80 /string.c | |
parent | 255f43160bf165df350454bdf4dcf72275029704 (diff) | |
download | ruby-bd421aa2d25aa73c83642a8f5af8fa16b794a3b6.tar.gz |
* string.c (rb_str_sub_bang): fix coderange.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -3307,7 +3307,11 @@ rb_str_sub_bang(int argc, VALUE *argv, VALUE str) if (OBJ_UNTRUSTED(repl)) untrusted = 1; if (ENC_CODERANGE_UNKNOWN < cr && cr < ENC_CODERANGE_BROKEN) { int cr2 = ENC_CODERANGE(repl); - if (cr2 == ENC_CODERANGE_UNKNOWN || cr2 > cr) cr = cr2; + if (cr2 == ENC_CODERANGE_BROKEN || + (cr == ENC_CODERANGE_VALID && cr2 == ENC_CODERANGE_7BIT)) + cr = ENC_CODERANGE_UNKNOWN; + else + cr = cr2; } plen = end0 - beg0; if (RSTRING_LEN(repl) > plen) { |