summaryrefslogtreecommitdiff
path: root/ext/dl/callback/mkcallback.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dl/callback/mkcallback.rb')
-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