[#15357] Regexp literal and Regexp.new() — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

14 messages 2001/12/05
[#15358] Regexp in UTF-8 (Re: Regexp literal and Regexp.new()) — TAKAHASHI Masayoshi <maki@...> 2001/12/05

高橋征義です。むーん、問題のありかが違ったかも。

[#15435] Time#utcoff — Tanaka Akira <akr@...17n.org>

In article <hvosnahj702.fsf@coulee.a02.aist.go.jp>,

20 messages 2001/12/13
[#15436] Re: Time#utcoff — matz@... (Yukihiro Matsumoto) 2001/12/14

まつもと ゆきひろです

[#15505] ERb — m_seki@...

74 messages 2001/12/20
[#15560] Re: ERb — Tanaka Akira <akr@...17n.org> 2001/12/27

In article <20011220114249J.seki@mr.nasu.toshiba.co.jp>,

[#15879] Re: ERb — m_seki@... 2002/02/12

[#15884] Re: ERb — Tanaka Akira <akr@...17n.org> 2002/02/14

In article <m3eljr5o9m.wl@edwin.mva.biglobe.ne.jp>,

[#15885] Re: ERb — m_seki@... 2002/02/14

[#15886] Re: ERb — m_seki@... 2002/02/14

[#15887] Re: ERb — TAKAHASHI Masayoshi <maki@...> 2002/02/14

高橋征義です。

[#15888] Re: ERb — m_seki@... 2002/02/14

[#15896] Re: ERb — Tanaka Akira <akr@...17n.org> 2002/02/15

In article <20020215085405G.seki@mr.nasu.toshiba.co.jp>,

[#15898] Re: ERb — m_seki@... 2002/02/15

[#15900] Re: ERb — TADA Tadashi <sho@...> 2002/02/16

ただただしです。

[#15901] Re: ERb — m_seki@... 2002/02/16

[#15906] Re: ERb — matz@... (Yukihiro Matsumoto) 2002/02/17

まつもと ゆきひろです

[#15909] 1.6 の寿命 (Re: Re: ERb) — Koji Arai <JCA02266@...> 2002/02/17

新井です。

[#15507] fileutils (2) — Minero Aoki <aamine@...>

あおきです。

30 messages 2001/12/20
[#15512] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/20

高橋征義です。

[#15513] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/21

あおきです。

[#15515] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/21

高橋征義です。結論は最後に。

[#15516] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/21

あおきです。

[#15533] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/22

高橋征義です。

[#15536] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/24

あおきです。

[#15540] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/24

高橋征義です。

[#15545] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/24

あおきです。

[#15557] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/26

高橋征義です。

[#15567] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/27

あおきです。

[#15573] [patch] resolv.rb for win32 platform — Tietew <tietew-ml-ruby-dev@...>

Tietew です。

22 messages 2001/12/28

[ruby-dev:15496] string.c: use RESIZE_CAPA for capacity change.

From: "K.Kosako" <kosako@...>
Date: 2001-12-19 02:54:29 UTC
List: ruby-dev #15496
Version : 1.7 latest (2001-12-18)

string.cの中でREALLOCしている部分で、
RSTRING(str)->aux.capaの更新が行われていない部分が数箇所あったので、
マクロを定義してREALLOCしている部分を書き換えてみました。

string.c: use RESIZE_CAPA for capacity change.

--- string.c.orig	Tue Dec 18 17:46:56 2001
+++ string.c	Wed Dec 19 11:42:13 2001
@@ -29,6 +29,11 @@
 
 #define STR_ASSOC   FL_USER3
 
+#define RESIZE_CAPA(str,capacity) do {\
+    REALLOC_N(RSTRING(str)->ptr, char, (capacity)+1);\
+    RSTRING(str)->aux.capa = (capacity);\
+} while (0)
+
 VALUE rb_fs;
 
 static VALUE
@@ -238,7 +243,7 @@
 	else if (RSTRING(str)->aux.shared) {
 	    /* str_buf */
 	    if (RSTRING(str)->aux.capa != RSTRING(str)->len) {
-		REALLOC_N(RSTRING(str)->ptr, char, RSTRING(str)->len + 1);
+		RESIZE_CAPA(str, RSTRING(str)->len);
 	    }
 	}
 	RSTRING(str)->aux.shared = add;
@@ -521,7 +526,7 @@
 
 	if (len >= 0) {
 	    if (RSTRING(str)->len < len || RSTRING(str)->len - len > 1024) {
-		REALLOC_N(RSTRING(str)->ptr, char, len + 1);
+		RESIZE_CAPA(str, len);
 	    }
 	    RSTRING(str)->len = len;
 	    RSTRING(str)->ptr[len] = '\0';	/* sentinel */
@@ -547,8 +552,7 @@
 	while (total > capa) {
 	    capa = (capa + 1) * 2;
 	}
-	REALLOC_N(RSTRING(str)->ptr, char, capa+1);
-	RSTRING(str)->aux.capa = capa;
+	RESIZE_CAPA(str, capa);
     }
     memcpy(RSTRING(str)->ptr + RSTRING(str)->len, ptr, len);
     RSTRING(str)->len = total;
@@ -578,7 +582,7 @@
 	if (!FL_TEST(str, ELTS_SHARED) && !FL_TEST(str, STR_ASSOC)) {
 	    return rb_str_buf_cat(str, ptr, len);
 	}
-	REALLOC_N(RSTRING(str)->ptr, char, RSTRING(str)->len+len+1);
+	RESIZE_CAPA(str, RSTRING(str)->len + len);
 	if (ptr) {
 	    memcpy(RSTRING(str)->ptr + RSTRING(str)->len, ptr, len);
 	}
@@ -616,8 +620,7 @@
 	while (len > capa) {
 	    capa = (capa + 1) * 2;
 	}
-	REALLOC_N(RSTRING(str)->ptr, char, capa+1);
-	RSTRING(str)->aux.capa = capa;
+	RESIZE_CAPA(str, capa);
     }
     memcpy(RSTRING(str)->ptr + RSTRING(str)->len,
 	   RSTRING(str2)->ptr, RSTRING(str2)->len);
@@ -642,7 +645,7 @@
 	    OBJ_INFECT(str, str2);
 	    return str;
 	}
-	REALLOC_N(RSTRING(str)->ptr, char, len+1);
+	RESIZE_CAPA(str, len);
 	memcpy(RSTRING(str)->ptr + RSTRING(str)->len,
 	       RSTRING(str2)->ptr, RSTRING(str2)->len);
 	RSTRING(str)->len += RSTRING(str2)->len;
@@ -1046,7 +1049,7 @@
 	}
     }
     if (s < sbeg) {
-	REALLOC_N(RSTRING(str)->ptr, char, RSTRING(str)->len + 2);
+	RESIZE_CAPA(str, RSTRING(str)->len + 1);
 	s = RSTRING(str)->ptr + n;
 	memmove(s+1, s, RSTRING(str)->len - n);
 	*s = c;
@@ -1197,7 +1200,7 @@
     StringValue(val);
     if (len < RSTRING(val)->len) {
 	/* expand string */
-	REALLOC_N(RSTRING(str)->ptr, char, RSTRING(str)->len+RSTRING(val)->len-len+1);
+	RESIZE_CAPA(str, RSTRING(str)->len + RSTRING(val)->len - len);
     }
 
     if (RSTRING(val)->len != len) {
@@ -1272,7 +1275,7 @@
 	if (FIXNUM_P(val)) {
 	    if (RSTRING(str)->len == idx) {
 		RSTRING(str)->len += 1;
-		REALLOC_N(RSTRING(str)->ptr, char, RSTRING(str)->len);
+		RESIZE_CAPA(str, RSTRING(str)->len);
 	    }
 	    RSTRING(str)->ptr[idx] = NUM2INT(val) & 0xff;
 	}
@@ -1427,8 +1430,7 @@
 	if (OBJ_TAINTED(repl)) tainted = 1;
 	plen = END(0) - BEG(0);
 	if (RSTRING(repl)->len > plen) {
-	    REALLOC_N(RSTRING(str)->ptr, char,
-		      RSTRING(str)->len + RSTRING(repl)->len - plen + 1);
+	    RESIZE_CAPA(str, RSTRING(str)->len + RSTRING(repl)->len - plen);
 	}
 	if (RSTRING(repl)->len != plen) {
 	    memmove(RSTRING(str)->ptr + BEG(0) + RSTRING(repl)->len,
--
小迫@ソフネック   渋谷区恵比寿1-15-1

In This Thread

Prev Next