From 1208254a992a3a79b89e021a2fe1f8f35f1b9513 Mon Sep 17 00:00:00 2001 From: naruse Date: Fri, 22 Feb 2008 12:15:56 +0000 Subject: * string.c (rb_enc_cr_str_copy): check string's coderange is 7bit or valid. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@15576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ string.c | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad7980981..400f3cdb0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Feb 22 21:12:42 2008 NARUSE, Yui + + * string.c (rb_enc_cr_str_copy): check string's coderange is 7bit or + valid. + Fri Feb 22 19:50:19 2008 Nobuyoshi Nakada * bignum.c (BIGZEROP): fix for longer Bignum zeros. [ruby-Bugs-17454] diff --git a/string.c b/string.c index 90ed51b10..da7eba3cb 100644 --- a/string.c +++ b/string.c @@ -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 -- cgit