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/