[#11131] Re: SIGINT on windows — Daisuke Aoki <dai@...>

青木です。

36 messages 2000/10/04
[#11217] Re: SIGINT on windows — Daisuke Aoki <dai@...> 2000/10/14

青木です。

[#11250] Re: SIGINT on windows — Daisuke Aoki <dai@...> 2000/10/16

青木です。

[#11258] Re: SIGINT on windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/10/17

なかだです。

[#11298] Re: SIGINT on windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/10/27

なかだです。

[#11183] EPOC32 and Ruby 1.7 — WATANABE Hirofumi <eban@...>

わたなべです.

44 messages 2000/10/12
[#11188] Re: EPOC32 and Ruby 1.7 — matz@... (Yukihiro Matsumoto) 2000/10/12

まつもと ゆきひろです

[#11191] ruby-bugs-ja PR#20 — Kazuhiro NISHIYAMA <zn@...> 2000/10/12

On Fri, 13 Oct 2000 00:17:14 +0900

[#11205] Re: ruby-bugs-ja PR#20 — Kazuhiro NISHIYAMA <zn@...> 2000/10/13

同じ問題を短いスクリプトで再現できました。

[#11210] Re: Thread.new with irb (PR#20) — matz@... (Yukihiro Matsumoto) 2000/10/13

まつもと ゆきひろです

[#11211] Re: Thread.new with irb (PR#20) — Kazuhiro NISHIYAMA <zn@...> 2000/10/13

On Sat, 14 Oct 2000 03:41:18 +0900

[#11221] Re: Thread.new with irb (PR#20) — Kazuhiro NISHIYAMA <zn@...> 2000/10/14

[ruby-dev:11205]と同じスクリプトで-dをつけていると

[#11306] Ruby I18N — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

130 messages 2000/10/28
[#11307] Re: Ruby I18N — " たけ (tk)" <ggb03124@...> 2000/10/28

たけ(tk)です。

[#11310] Re: Ruby I18N — kenn@... 2000/10/29

長沢です。

[#11314] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/10/29

まつもと ゆきひろです

[#11315] Re: Ruby I18N — Shugo Maeda <shugo@...> 2000/10/30

前田です。

[#11324] Re: Ruby I18N — TAKAHASHI Masayoshi <maki@...> 2000/10/30

高橋征義です。

[#11337] Re: Ruby I18N — Yasushi Shoji <yashi@...> 2000/10/30

At Mon, 30 Oct 2000 13:15:23 +0900,

[#11346] Re: Ruby I18N — TAKAHASHI Masayoshi <maki@...> 2000/10/31

某2ちゃんねるで自分の名前を見つけてびびった高橋征義です。

[#11347] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/10/31

まつもと ゆきひろです

[#11370] Re: Ruby I18N — TAKAHASHI Masayoshi <maki@...> 2000/11/02

高橋征義です。

[#11372] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/02

まつもと ゆきひろです

[#11375] Re: Ruby I18N — TAKAHASHI Masayoshi <maki@...> 2000/11/04

高橋征義です。

[#11378] Re: Ruby I18N — " たけ (tk)" <ggb03124@...> 2000/11/05

たけ(tk)です。

[#11379] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/05

まつもと ゆきひろです

[#11380] Re: Ruby I18N — " たけ (tk)" <ggb03124@...> 2000/11/05

たけ(tk)です。

[#11382] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/05

まつもと ゆきひろです

[#11393] Re: Ruby I18N — "たけ(tk)" <ggb03124@...> 2000/11/07

たけ(tk)です。 ・・ 長文ご注意。

[#11396] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/07

まつもと ゆきひろです

[#11397] Re: Ruby I18N — Yasushi Shoji <yashi@...> 2000/11/07

At Tue, 7 Nov 2000 15:46:29 +0900,

[#11398] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/07

まつもと ゆきひろです

[#11399] Re: Ruby I18N — Tanaka Akira <akr@...17n.org> 2000/11/07

In article <E13t3dt-0002Fp-00@ev.netlab.zetabits.co.jp>,

[#11401] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/07

まつもと ゆきひろです

[#11404] Re: Ruby I18N — "たけ(tk)" <ggb03124@...> 2000/11/07

たけ(tk)です。

[#11406] Re: Ruby I18N — Yasushi Shoji <yashi@...> 2000/11/07

At Tue, 7 Nov 2000 19:06:27 +0900,

[#11407] Re: Ruby I18N — "たけ(tk)" <ggb03124@...> 2000/11/07

たけ(tk)です。

[#11409] Re: Ruby I18N — Minero Aoki <aamine@...> 2000/11/07

あおきです。

[#11423] Re: Ruby I18N — Tanaka Akira <akr@...17n.org> 2000/11/08

In article <E13t4Hq-0002GS-00@ev.netlab.zetabits.co.jp>,

[#11426] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/08

まつもと ゆきひろです

[#11427] Re: Ruby I18N — Tanaka Akira <akr@...17n.org> 2000/11/08

In article <E13tMYW-0002te-00@ev.netlab.zetabits.co.jp>,

[#11428] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/08

まつもと ゆきひろです

[#11430] Re: Ruby I18N — "たけ(tk)" <ggb03124@...> 2000/11/08

たけ(tk)です。

[#11433] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/08

まつもと ゆきひろです

[#11446] 『文字列は文字の配列か』 — " たけ (tk)" <ggb03124@...> 2000/11/08

たけ(tk)です。

[#11470] Proposal of "Array of CharCode" — " たけ (tk)" <ggb03124@...> 2000/11/10

たけ(tk)です。

[#11471] Re: Proposal of "Array of CharCode" — matz@... (Yukihiro Matsumoto) 2000/11/10

まつもと ゆきひろです

[#11450] Re: Ruby I18N — Tanaka Akira <akr@...17n.org> 2000/11/09

In article <E13tNkT-00030l-00@ev.netlab.zetabits.co.jp>,

[ruby-dev:11138] copy-on-write for substr

From: Shugo Maeda <shugo@...>
Date: 2000-10-06 08:18:09 UTC
List: ruby-dev #11138
前田です。

rb_str_substr()をcopy-on-writeにするパッチです。
dupされたものと区別するためにフラグを増やしたんですが、問題がある
でしょうか?

-- 
前田 修吾

Index: string.c
===================================================================
RCS file: /home/cvs/ruby/string.c,v
retrieving revision 1.46
diff -u -r1.46 string.c
--- string.c	2000/10/02 07:48:33	1.46
+++ string.c	2000/10/06 08:14:23
@@ -28,6 +28,7 @@
 VALUE rb_cString;
 
 #define STR_NO_ORIG FL_USER2
+#define STR_SUBSTR FL_USER3
 
 VALUE rb_fs;
 
@@ -99,7 +100,7 @@
 {
     if (OBJ_FROZEN(orig)) return orig;
     if (RSTRING(orig)->orig) {
-	if (FL_TEST(orig, STR_NO_ORIG)) {
+	if (FL_TEST(orig, STR_NO_ORIG|STR_SUBSTR)) {
 	    orig = rb_str_new(RSTRING(orig)->ptr, RSTRING(orig)->len);
 	    OBJ_FREEZE(orig);
 	    return orig;
@@ -195,7 +196,12 @@
 	klass = (VALUE)RCLASS(klass)->super;
     }
 
-    if (OBJ_FROZEN(str)) str2 = rb_str_new3(str);
+    if (FL_TEST(str, STR_SUBSTR)) {
+	str2 = rb_str_new(RSTRING(str)->ptr, RSTRING(str)->len);
+    }
+    else if (OBJ_FROZEN(str)) {
+	str2 = rb_str_new3(str);
+    }
     else if (FL_TEST(str, STR_NO_ORIG)) {
 	str2 = rb_str_new(RSTRING(str)->ptr, RSTRING(str)->len);
     }
@@ -348,9 +354,32 @@
 	len = 0;
     }
     if (len == 0) return rb_str_new(0,0);
-
-    str2 = rb_str_new(RSTRING(str)->ptr+beg, len);
+    
+    if (OBJ_FROZEN(str)) {
+	str2 = rb_str_new3(str);
+	RSTRING(str2)->ptr = RSTRING(str)->ptr + beg;
+	RSTRING(str2)->len = len;
+    }
+    else if (FL_TEST(str, STR_NO_ORIG)) {
+	str2 = rb_str_new(RSTRING(str)->ptr+beg, len);
+    }
+    else if (RSTRING(str)->orig) {
+	str2 = rb_str_new3(RSTRING(str)->orig);
+	RSTRING(str2)->ptr = RSTRING(str)->ptr + beg;
+	RSTRING(str2)->len = len;
+    }
+    else {
+	VALUE orig;
+	NEWOBJ(str2, struct RString);
+	OBJSETUP(str2, rb_cString, T_STRING);
+
+	orig = rb_str_new4(str);
+	RSTRING(str2)->ptr = RSTRING(orig)->ptr + beg;
+	RSTRING(str2)->len = len;
+	RSTRING(str2)->orig = orig;
+    }
     if (OBJ_TAINTED(str)) OBJ_TAINT(str2);
+    FL_SET(str2, STR_SUBSTR);
 
     return str2;
 }
@@ -394,7 +423,7 @@
 rb_str_dup_frozen(str)
     VALUE str;
 {
-    if (RSTRING(str)->orig && !FL_TEST(str, STR_NO_ORIG)) {
+    if (RSTRING(str)->orig && !FL_TEST(str, STR_NO_ORIG|STR_SUBSTR)) {
 	OBJ_FREEZE(RSTRING(str)->orig);
 	return RSTRING(str)->orig;
     }

In This Thread

Prev Next