From 1d42215eb5c0a68c542f5855010bcc816c01fdb6 Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 2 Oct 2008 11:46:40 +0000 Subject: * string.c (rb_str_sub_bang): fix coderange. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'string.c') diff --git a/string.c b/string.c index 06bb26caa..d1fe9db70 100644 --- a/string.c +++ b/string.c @@ -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) { -- cgit