Skip to content

Commit fd443c4

Browse files
committed
Fix generator
1 parent 3483fc6 commit fd443c4

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

_scripts/dump_ruby_c_functions.rb

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,20 @@ def generate_go_file(definition:, header_dir:)
148148
go_function_lines << "func #{go_function_name}(#{go_function_args.join(", ")}) #{go_function_typeref} {"
149149

150150
call_c_method = "C.#{definition[:function_name]}("
151-
casted_go_args = definition[:args].map do |c_arg|
152-
"#{cast_to_cgo_type(c_arg[:type])}(#{c_arg[:name]})"
151+
152+
casted_go_args = []
153+
definition[:args].each do |c_arg|
154+
if c_arg[:type] == "char*"
155+
go_function_lines << "#{c_arg[:name]}Char, #{c_arg[:name]}CharClean := string2Char(#{c_arg[:name]})"
156+
go_function_lines << "defer #{c_arg[:name]}CharClean()"
157+
go_function_lines << ""
158+
159+
casted_go_args << "#{c_arg[:name]}Char"
160+
else
161+
casted_go_args << "#{cast_to_cgo_type(c_arg[:type])}(#{c_arg[:name]})"
162+
end
153163
end
164+
154165
call_c_method << casted_go_args.join(", ")
155166
call_c_method << ")"
156167

@@ -184,8 +195,6 @@ def cast_to_cgo_type(typename)
184195
return "C.ulong"
185196
when "unsigned int"
186197
return "C.uint"
187-
when "char*"
188-
return "string2Char"
189198
when "VALUE*"
190199
return "toCValueArray"
191200
when /^VALUE\s*\(\*func\)\s*\(ANYARGS\)$/

0 commit comments

Comments
 (0)