summaryrefslogtreecommitdiff
path: root/ext/dl/callback
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-30 05:25:32 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-30 05:25:32 +0000
commit28b9f11d5a4b878adb50a3e5472ceea8c462ed4a (patch)
tree0089b9a1bce84d5ec72badeae44b4e08f08a9c33 /ext/dl/callback
parentcf5450bb7c86c4eb83f0d468c73d987e4a3e7344 (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.rb11
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