ruby-changes:20673
From: nobu <ko1@a...>
Date: Thu, 28 Jul 2011 12:34:04 +0900 (JST)
Subject: [ruby-changes:20673] nobu:r32721 (trunk): * ext/dl/callback/mkcallback.rb (gencallback): use PTR2NUM.
nobu 2011-07-28 12:32:56 +0900 (Thu, 28 Jul 2011) New Revision: 32721 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32721 Log: * ext/dl/callback/mkcallback.rb (gencallback): use PTR2NUM. Modified files: trunk/ChangeLog trunk/ext/dl/callback/mkcallback.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 32720) +++ ChangeLog (revision 32721) @@ -1,5 +1,7 @@ -Thu Jul 28 12:32:49 2011 Nobuyoshi Nakada <nobu@r...> +Thu Jul 28 12:32:53 2011 Nobuyoshi Nakada <nobu@r...> + * ext/dl/callback/mkcallback.rb (gencallback): use PTR2NUM. + * ext/dl/cptr.c (rb_dlptr_aref, rb_dlptr_aset): check NULL pointer dereference. Index: ext/dl/callback/mkcallback.rb =================================================================== --- ext/dl/callback/mkcallback.rb (revision 32720) +++ ext/dl/callback/mkcallback.rb (revision 32721) @@ -124,21 +124,13 @@ <<-EOS #{calltype == STDCALL ? "\n#ifdef FUNC_STDCALL" : ""} static #{DLTYPE[ty][:type]} -FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)})(#{(0...argc).collect{|i| "DLSTACK_TYPE stack" + i.to_s}.join(", ")}) +FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)})(#{(0...argc).collect{|i| "DLSTACK_TYPE stack#{i}"}.join(", ")}) { VALUE ret, cb#{argc > 0 ? ", args[#{argc}]" : ""}; #{ - sizeof_voidp = [""].pack('p').size - sizeof_long = [0].pack('l!').size (0...argc).collect{|i| - if sizeof_voidp == sizeof_long - " args[%d] = LONG2NUM(stack%d);" % [i,i] - elsif sizeof_voidp == 8 # should get sizeof_long_long... - " args[%d] = LL2NUM(stack%d);" % [i,i] - else - raise "unknown size of void*" - end - }.join("\n") + "\n args[#{i}] = PTR2NUM(stack#{i});" + }.join("") } cb = rb_ary_entry(rb_ary_entry(#{proc_entry}, #{ty}), #{(n * DLSTACK_SIZE) + argc}); ret = rb_funcall2(cb, rb_dl_cb_call, #{argc}, #{argc > 0 ? 'args' : 'NULL'}); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/