Fix cloning trait structs via native clone method
authorMatt Corallo <git@bluematt.me>
Tue, 17 Aug 2021 22:15:55 +0000 (22:15 +0000)
committerMatt Corallo <git@bluematt.me>
Tue, 17 Aug 2021 22:15:55 +0000 (22:15 +0000)
When cloning a trait struct, we need to reference the
already-converted-to-struct value, not the original, integer,
value.

gen_type_mapping.py

index 6cf389aac46ff049e668154a9ba0bc96661fe1e2..ab95f9b68bcb67a80894ceceee1e43b65cd7d335 100644 (file)
@@ -297,7 +297,7 @@ class TypeMappingGenerator:
                     if not is_free:
                         needs_full_clone = not is_free and (not ty_info.is_ptr and not holds_ref or ty_info.requires_clone == True) and ty_info.requires_clone != False
                         if needs_full_clone and (ty_info.rust_obj.replace("LDK", "") + "_clone") in self.clone_fns:
-                            base_conv = base_conv + "\n" + ty_info.var_name + "_conv = " + ty_info.rust_obj.replace("LDK", "") + "_clone(" + ty_info.var_name + ");"
+                            base_conv = base_conv + "\n" + ty_info.var_name + "_conv = " + ty_info.rust_obj.replace("LDK", "") + "_clone(&" + ty_info.var_name + "_conv);"
                         else:
                             base_conv = base_conv + self.consts.trait_struct_inc_refcnt(ty_info)
                             if needs_full_clone: