まつもと ゆきひろです
In message "[ruby-dev:22415] Re: Tk.callback_break causes seg-fault or hang-up"
on 03/12/25, Yukihiro Matsumoto <matz / ruby-lang.org> writes:
|In message "[ruby-dev:22413] Re: Tk.callback_break causes seg-fault or hang-up"
| on 03/12/25, nobu.nakada / nifty.ne.jp <nobu.nakada / nifty.ne.jp> writes:
|
||rb_str_update()はstringioで使ってるので、残しといて欲しいです。
|
|同じ問題が起きますよ(rb_str_update()はrb_str_modify()を呼ん
|でない)。名前を変えるか。
こんなパッチでどうでしょう?
--- ChangeLog 24 Dec 2003 19:38:15 -0000 1.2673
+++ ChangeLog 25 Dec 2003 08:26:58 -0000
@@ -0,0 +1,4 @@
+Thu Dec 25 15:30:17 2003 Yukihiro Matsumoto <matz / ruby-lang.org>
+
+ * string.c (rb_str_update): call rb_str_modify().
+
diff -p -u -1 -r1.182 string.c
--- string.c 30 Nov 2003 00:35:28 -0000 1.182
+++ string.c 25 Dec 2003 08:24:39 -0000
@@ -1277,4 +1581,4 @@ rb_str_aref_m(argc, argv, str)
-void
-rb_str_update(str, beg, len, val)
+static void
+rb_str_splice(str, beg, len, val)
VALUE str;
@@ -1322,2 +1626,12 @@ rb_str_update(str, beg, len, val)
+void
+rb_str_update(str, beg, len, val)
+ VALUE str;
+ long beg, len;
+ VALUE val;
+{
+ rb_str_modify(str);
+ return rb_str_splice(str, beg, len, val);
+}
+
static void
@@ -1353,3 +1667,3 @@ rb_str_subpat_set(str, re, nth, val)
rb_str_modify(str);
- rb_str_update(str, start, len, val);
+ rb_str_splice(str, start, len, val);
}
@@ -1384,3 +1698,3 @@ rb_str_aset(str, indx, val)
else {
- rb_str_update(str, idx, 1, val);
+ rb_str_splice(str, idx, 1, val);
}
@@ -1397,3 +1711,3 @@ rb_str_aset(str, indx, val)
}
- rb_str_update(str, beg, RSTRING(indx)->len, val);
+ rb_str_splice(str, beg, RSTRING(indx)->len, val);
return val;
@@ -1405,3 +1719,3 @@ rb_str_aset(str, indx, val)
if (rb_range_beg_len(indx, &beg, &len, RSTRING(str)->len, 2)) {
- rb_str_update(str, beg, len, val);
+ rb_str_splice(str, beg, len, val);
return val;
@@ -1426,3 +1765,3 @@ rb_str_aset_m(argc, argv, str)
else {
- rb_str_update(str, NUM2LONG(argv[0]), NUM2LONG(argv[1]), argv[2]);
+ rb_str_splice(str, NUM2LONG(argv[0]), NUM2LONG(argv[1]), argv[2]);
}
@@ -1449,3 +1805,3 @@ rb_str_insert(str, idx, str2)
}
- rb_str_update(str, pos, 0, str2);
+ rb_str_splice(str, pos, 0, str2);
return str;