diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-09-30 05:25:32 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-09-30 05:25:32 +0000 |
commit | 28b9f11d5a4b878adb50a3e5472ceea8c462ed4a (patch) | |
tree | 0089b9a1bce84d5ec72badeae44b4e08f08a9c33 /ext/dl/callback | |
parent | cf5450bb7c86c4eb83f0d468c73d987e4a3e7344 (diff) |
protoize no-arguments functions
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/dl/callback')
-rwxr-xr-x[-rw-r--r--] | ext/dl/callback/mkcallback.rb | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/ext/dl/callback/mkcallback.rb b/ext/dl/callback/mkcallback.rb index e94a196247..15802f5e05 100644..100755 --- a/ext/dl/callback/mkcallback.rb +++ b/ext/dl/callback/mkcallback.rb @@ -123,10 +123,15 @@ end def gencallback(ty, calltype, proc_entry, argc, n) dltype = DLTYPE[ty] ret = dltype[:conv] + if argc == 0 + args = "void" + else + args = (0...argc).collect{|i| "DLSTACK_TYPE stack#{i}"}.join(", ") + end src = <<-EOS #{calltype == STDCALL ? "\n#ifdef FUNC_STDCALL" : ""} static #{dltype[:type]} -FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)})(#{(0...argc).collect{|i| "DLSTACK_TYPE stack#{i}"}.join(", ")}) +FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)})(#{args}) { VALUE #{ret ? "ret, " : ""}cb#{argc > 0 ? ", args[#{argc}]" : ""}; #{ @@ -177,7 +182,7 @@ extern ID rb_dl_cb_call; yield body body << <<-EOS void -#{initname}() +#{initname}(void) { #{gen_push_proc_ary(ty, "rb_DLCdeclCallbackProcs")} #{gen_push_addr_ary(ty, "rb_DLCdeclCallbackAddrs", CDECL)} @@ -201,7 +206,7 @@ for ty in 0...MAX_DLTYPE end end } - $out << "void #{initname}();\n" + $out << "void #{initname}(void);\n" callbacks << [filename, body] end |