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

ruby-changes:8098

From: akr <ko1@a...>
Date: Mon, 29 Sep 2008 20:57:00 +0900 (JST)
Subject: [ruby-changes:8098] Ruby:r19624 (trunk): * string.c (rb_str_subseq): use rb_str_drop_bytes if possible.

akr	2008-09-29 20:56:43 +0900 (Mon, 29 Sep 2008)

  New Revision: 19624

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19624

  Log:
    * string.c (rb_str_subseq): use rb_str_drop_bytes if possible.

  Modified files:
    trunk/ChangeLog
    trunk/string.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19623)
+++ ChangeLog	(revision 19624)
@@ -1,3 +1,7 @@
+Mon Sep 29 20:41:19 2008  Tanaka Akira  <akr@f...>
+
+	* string.c (rb_str_subseq): use rb_str_drop_bytes if possible.
+
 Mon Sep 29 20:22:20 2008  Tadayoshi Funaba  <tadf@d...>
 
 	* test/date/*.rb: imported additional tests and some adjustments.
Index: string.c
===================================================================
--- string.c	(revision 19623)
+++ string.c	(revision 19624)
@@ -1283,8 +1283,16 @@
 VALUE
 rb_str_subseq(VALUE str, long beg, long len)
 {
-    VALUE str2 = rb_str_new5(str, RSTRING_PTR(str)+beg, len);
+    VALUE str2;
 
+    if (RSTRING_LEN(str) == beg + len) {
+        str2 = rb_str_new_shared(str);
+        rb_str_drop_bytes(str2, beg);
+    }
+    else {
+        str2 = rb_str_new5(str, RSTRING_PTR(str)+beg, len);
+    }
+
     rb_enc_cr_str_copy_for_substr(str2, str);
     OBJ_INFECT(str2, str);
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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