[#25035] 拡張ライブラリへの共有ライブラリのPATHの埋め込み — Takahiro Kambe <taca@...>

こんにちは。

16 messages 2004/12/03
[#25070] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — nobu@... 2004/12/06

なかだです。

[#25071] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — Takahiro Kambe <taca@...> 2004/12/06

In message <200412060607.iB667giF007533@sharui.nakada.niregi.kanuma.tochigi.jp>

[#25089] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — nobu@... 2004/12/07

なかだです。

[#25090] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — Takahiro Kambe <taca@...> 2004/12/07

In message <200412070015.iB70FAiF012770@sharui.nakada.niregi.kanuma.tochigi.jp>

[#25093] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — akira yamada / やまだあきら <akira@...> 2004/12/07

2004-12-07 (火) の 12:27 +0900 に Takahiro Kambe さんは書きました:

[#25041] temporal locking already locked string on simultaneous write — Tanaka Akira <akr@...17n.org>

同じ文字列をほぼ同時に IO に書き込むと、temporal locking already

13 messages 2004/12/04
[#25042] Re: temporal locking already locked string on simultaneous write — Yukihiro Matsumoto <matz@...> 2004/12/04

まつもと ゆきひろです

[#25043] Re: temporal locking already locked string on simultaneous write — Tanaka Akira <akr@...17n.org> 2004/12/04

In article <1102133507.339625.10453.nullmailer@x31.priv.netlab.jp>,

[#25096] double free problem — "Akinori MUSHA" <knu@...>

 ご無沙汰しております。

15 messages 2004/12/07
[#25099] Re: double free problem — Yukihiro Matsumoto <matz@...> 2004/12/07

Hi,

[#25101] non-stdio buffering — Tanaka Akira <akr@...17n.org>

えぇと、今回 1.9 でなにが起きたのかを私が把握している範囲でまとめてお

18 messages 2004/12/07

[#25152] 1.8 reopen problem with duplex popen — Tanaka Akira <akr@...17n.org>

次のように、1.8 で双方向 popen な IO を reopen するとエラーになること

11 messages 2004/12/10

[#25158] core dump on NetBSD 2.0 — Tanaka Akira <akr@...17n.org>

NetBSD 2.0 で次のようにすると core を吐きます。

18 messages 2004/12/11
[#25159] Re: core dump on NetBSD 2.0 — Tanaka Akira <akr@...17n.org> 2004/12/11

In article <87hdmsivva.fsf@serein.a02.aist.go.jp>,

[#25163] Re: core dump on NetBSD 2.0 — Tanaka Akira <akr@...17n.org> 2004/12/12

In article <87ekhwiv7g.fsf@serein.a02.aist.go.jp>,

[#25165] Re: core dump on NetBSD 2.0 — nobu@... 2004/12/13

なかだです。

[#25167] Re: core dump on NetBSD 2.0 — Tanaka Akira <akr@...17n.org> 2004/12/13

In article <200412130040.iBD0e8Qh003275@sharui.nakada.niregi.kanuma.tochigi.jp>,

[#25193] 1.8.2 release schedule — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

15 messages 2004/12/14

[#25299] Re: リリース準備 — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

20 messages 2004/12/24
[#25301] Re: リリース準備 — TAKAHASHI Masayoshi <maki@...> 2004/12/24

高橋征義です。

[#25302] test_readline.rb blocks on BSD again — GOTOU Yuuzou <gotoyuzo@...>

In message <20041223175402.3116FC6718@lithium.ruby-lang.org>,

15 messages 2004/12/24
[#25314] Re: test_readline.rb blocks on BSD again — GOTOU Yuuzou <gotoyuzo@...> 2004/12/24

In message <20041224.131211.846943951.gotoyuzo@sawara.does.notwork.org>,

[#25315] Re: test_readline.rb blocks on BSD again — Yukihiro Matsumoto <matz@...> 2004/12/24

まつもと ゆきひろです

[#25317] Re: test_readline.rb blocks on BSD again — WATANABE Hirofumi <eban@...> 2004/12/25

わたなべです。

[ruby-dev:25250] Re: Struct.new dumps core

From: nobu@...
Date: 2004-12-18 19:58:53 UTC
List: ruby-dev #25250
なかだです。

At Sun, 19 Dec 2004 01:00:03 +0900,
Tanaka Akira wrote in [ruby-dev:25249]:
> 次のようにすると core を吐きます。
> 
> % ./ruby -e '
> name = "A" * 0x20000
> S1 = Struct.new(name, :a)
> class << $stderr; self end.send(:define_method, :write) {|s|
>   name.clear
> }
> S2 = Struct.new(name, :a)
> '
> -e:7: [BUG] Segmentation fault
> ruby 1.9.0 (2004-12-18) [i686-linux]

make_struct()の引数をIDにしちゃうというのはどうでしょうか。


* struct.c (make_struct): use ID as name.  fixed: [ruby-dev:25249]


Index: struct.c
===================================================================
RCS file: /cvs/ruby/src/ruby/struct.c,v
retrieving revision 1.60
diff -U2 -p -r1.60 struct.c
--- struct.c	27 Sep 2004 04:46:54 -0000	1.60
+++ struct.c	18 Dec 2004 19:52:01 -0000
@@ -176,13 +176,13 @@ rb_struct_set(obj, val)
 
 static VALUE
-make_struct(name, members, klass)
-    VALUE name, members, klass;
+make_struct(id, members, klass)
+    ID id;
+    VALUE members, klass;
 {
     VALUE nstr;
-    ID id;
     long i;
 
     OBJ_FREEZE(members);
-    if (NIL_P(name)) {
+    if (!id) {
 	nstr = rb_class_new(klass);
 	rb_make_metaclass(nstr, RBASIC(klass)->klass);
@@ -190,6 +190,5 @@ make_struct(name, members, klass)
     }
     else {
-	char *cname = StringValuePtr(name);
-	id = rb_intern(cname);
+	char *cname = rb_id2name(id);
 	if (!rb_is_const_id(id)) {
 	    rb_name_error(id, "identifier %s needs to be constant", cname);
@@ -209,5 +208,5 @@ make_struct(name, members, klass)
     rb_define_singleton_method(nstr, "members", rb_struct_s_members_m, 0);
     for (i=0; i< RARRAY(members)->len; i++) {
-	ID id = SYM2ID(RARRAY(members)->ptr[i]);
+	id = SYM2ID(RARRAY(members)->ptr[i]);
 	if (i<10) {
 	    rb_define_method_id(nstr, id, ref_func[i], 0);
@@ -240,9 +239,10 @@ rb_struct_define(name, va_alist)
 {
     va_list ar;
-    VALUE nm, ary;
+    ID nm;
+    VALUE ary;
     char *mem;
 
     if (!name) nm = Qnil;
-    else nm = rb_str_new2(name);
+    else nm = rb_intern(name);
     ary = rb_ary_new();
 
@@ -307,14 +307,15 @@ rb_struct_s_def(argc, argv, klass)
 	RARRAY(rest)->ptr[i] = ID2SYM(id);
     }
+    id = 0;
     if (!NIL_P(name)) {
 	VALUE tmp = rb_check_string_type(name);
 
+	id = rb_to_id(name);
 	if (NIL_P(tmp)) {
-	    id = rb_to_id(name);
 	    rb_ary_unshift(rest, ID2SYM(id));
-	    name = Qnil;
+	    id = 0;
 	}
     }
-    st = make_struct(name, rest, klass);
+    st = make_struct(id, rest, klass);
     if (rb_block_given_p()) {
 	rb_mod_module_eval(0, 0, st);


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next