ruby-changes:4063
From: ko1@a...
Date: Wed, 20 Feb 2008 19:20:58 +0900 (JST)
Subject: [ruby-changes:4063] naruse - Ruby:r15553 (trunk): * string.c (rb_enc_str_copy): added for wrapper for rb_enc_copy.
naruse 2008-02-20 19:20:43 +0900 (Wed, 20 Feb 2008) New Revision: 15553 Modified files: trunk/ChangeLog trunk/string.c Log: * string.c (rb_enc_str_copy): added for wrapper for rb_enc_copy. this also copy coderange when ptr and len is equal. * string.c (rb_enc_cr_str_copy): added for wrapper for rb_enc_copy. this always copy coderange. * string.c (str_replace_shared): use rb_enc_str_copy. * string.c (str_new3): don't rb_enc_copy because encoding is copied at str_replace_shared. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=15553&r2=15552&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15553&r2=15552&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 15552) +++ ChangeLog (revision 15553) @@ -1,3 +1,16 @@ +Wed Feb 20 19:15:38 2008 NARUSE, Yui <naruse@r...> + + * string.c (rb_enc_str_copy): added for wrapper for rb_enc_copy. + this also copy coderange when ptr and len is equal. + + * string.c (rb_enc_cr_str_copy): added for wrapper for rb_enc_copy. + this always copy coderange. + + * string.c (str_replace_shared): use rb_enc_str_copy. + + * string.c (str_new3): don't rb_enc_copy because encoding is copied + at str_replace_shared. + Wed Feb 20 13:08:52 2008 Nobuyoshi Nakada <nobu@r...> * instruby.rb (parse_args): added --dir-mode, --script-mode and Index: string.c =================================================================== --- string.c (revision 15552) +++ string.c (revision 15553) @@ -201,6 +201,23 @@ return ENC_CODERANGE_VALID; } +void +rb_enc_str_copy(VALUE str1, VALUE str2) +{ + rb_enc_copy(str1, str2); + if (RSTRING_PTR(str1) == RSTRING_PTR(str2) && + RSTRING_LEN(str1) == RSTRING_LEN(str2)) { + ENC_CODERANGE_SET(str1, ENC_CODERANGE(str2)); + } +} + +void +rb_enc_cr_str_copy(VALUE str1, VALUE str2) +{ + rb_enc_copy(str1, str2); + ENC_CODERANGE_SET(str1, ENC_CODERANGE(str2)); +} + int rb_enc_str_coderange(VALUE str) { @@ -359,6 +376,7 @@ RSTRING(str2)->as.heap.aux.shared = str; FL_SET(str2, ELTS_SHARED); } + rb_enc_cr_str_copy(str2, str); return str2; } @@ -372,10 +390,7 @@ static VALUE str_new3(VALUE klass, VALUE str) { - VALUE str2 = str_new_shared(klass, str); - - rb_enc_copy(str2, str); - return str2; + return str_new_shared(klass, str); } VALUE -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/