Don't assume from-var conversion in opaque ret conv
authorMatt Corallo <git@bluematt.me>
Wed, 23 Mar 2022 18:44:04 +0000 (18:44 +0000)
committerMatt Corallo <git@bluematt.me>
Wed, 23 Mar 2022 18:44:04 +0000 (18:44 +0000)
When we do a ret-conv of an opaque struct, don't assume that the
variable as-parsed exists, instead use the variable that's being
created in the ret-conv string if we need to clone.

gen_type_mapping.py

index 0b0e135902353a24564876be51573fafc5c390e2..d3d00d28a172d46af1641034e1040609aec0a378 100644 (file)
@@ -309,7 +309,7 @@ class TypeMappingGenerator:
                     opaque_ret_conv_suf += "if ((uintptr_t)" + ty_info.var_name + "_var.inner > 4096) {\n"
                     indent = "\t"
                 if not holds_ref and ty_info.is_ptr and (ty_info.rust_obj.replace("LDK", "") + "_clone") in self.clone_fns: # is_ptr, not holds_ref implies passing a pointed-to value to java, which needs copied
-                    opaque_ret_conv_suf += indent + ty_info.var_name + "_var = " + ty_info.rust_obj.replace("LDK", "") + "_clone(" + ty_info.var_name + ");\n"
+                    opaque_ret_conv_suf += indent + ty_info.var_name + "_var = " + ty_info.rust_obj.replace("LDK", "") + "_clone(&" + ty_info.var_name + "_var);\n"
                 elif not holds_ref and ty_info.is_ptr:
                     opaque_ret_conv_suf += indent + "// WARNING: we may need a move here but no clone is available for " + ty_info.rust_obj + "\n"