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/