1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/dl/mkcallback.rb (rb_dl_init_callbacks): avoid GC problem which

is caused by 'GC.stress=true; require "dl"'.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2008-08-30 05:42:06 +00:00
parent 1b80bfa469
commit 375dbe3c73
2 changed files with 18 additions and 8 deletions

View file

@ -1,3 +1,8 @@
Sat Aug 30 14:39:51 2008 Tanaka Akira <akr@fsij.org>
* 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@atdot.net>
* ext/iconv/iconv.c: remove include pragma for "ruby/intern.h".

View file

@ -135,16 +135,21 @@ $out << (<<EOS)
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));",