[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]