File tree Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Original file line number Diff line number Diff 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\) $/
You can’t perform that action at this time.
0 commit comments