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

ruby-changes:7421

From: akr <ko1@a...>
Date: Sat, 30 Aug 2008 14:42:22 +0900 (JST)
Subject: [ruby-changes:7421] Ruby:r18940 (trunk): * ext/dl/mkcallback.rb (rb_dl_init_callbacks): avoid GC problem which

akr	2008-08-30 14:42:06 +0900 (Sat, 30 Aug 2008)

  New Revision: 18940

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

  Log:
    * ext/dl/mkcallback.rb (rb_dl_init_callbacks): avoid GC problem which
      is caused by 'GC.stress=true; require "dl"'.

  Modified files:
    trunk/ChangeLog
    trunk/ext/dl/mkcallback.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18939)
+++ ChangeLog	(revision 18940)
@@ -1,3 +1,8 @@
+Sat Aug 30 14:39:51 2008  Tanaka Akira  <akr@f...>
+
+	* ext/dl/mkcallback.rb (rb_dl_init_callbacks): avoid GC problem which
+	  is caused by 'GC.stress=true; require "dl"'.
+
 Sat Aug 30 10:46:44 2008  Koichi Sasada  <ko1@a...>
 
 	* ext/iconv/iconv.c: remove include pragma for "ruby/intern.h".
Index: ext/dl/mkcallback.rb
===================================================================
--- ext/dl/mkcallback.rb	(revision 18939)
+++ ext/dl/mkcallback.rb	(revision 18940)
@@ -135,16 +135,21 @@
 static void
 rb_dl_init_callbacks()
 {
+    VALUE tmp;
     cb_call = rb_intern("call");		       
 
-    rb_DLCdeclCallbackProcs = rb_ary_new();
-    rb_DLCdeclCallbackAddrs = rb_ary_new();
-    rb_DLStdcallCallbackProcs = rb_ary_new();
-    rb_DLStdcallCallbackAddrs = rb_ary_new();
-    rb_define_const(rb_mDL, "CdeclCallbackProcs", rb_DLCdeclCallbackProcs);
-    rb_define_const(rb_mDL, "CdeclCallbackAddrs", rb_DLCdeclCallbackAddrs);
-    rb_define_const(rb_mDL, "StdcallCallbackProcs", rb_DLStdcallCallbackProcs);
-    rb_define_const(rb_mDL, "StdcallCallbackAddrs", rb_DLStdcallCallbackAddrs);
+    tmp = rb_DLCdeclCallbackProcs = rb_ary_new();
+    rb_define_const(rb_mDL, "CdeclCallbackProcs", tmp);
+
+    tmp = rb_DLCdeclCallbackAddrs = rb_ary_new();
+    rb_define_const(rb_mDL, "CdeclCallbackAddrs", tmp);
+
+    tmp = rb_DLStdcallCallbackProcs = rb_ary_new();
+    rb_define_const(rb_mDL, "StdcallCallbackProcs", tmp);
+
+    tmp = rb_DLStdcallCallbackAddrs = rb_ary_new();
+    rb_define_const(rb_mDL, "StdcallCallbackAddrs", tmp);
+
 #{
     (0...MAX_DLTYPE).collect{|ty|
       sprintf("    rb_ary_push(rb_DLCdeclCallbackProcs, rb_ary_new3(%d,%s));",

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

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