From a8eb3ba48b87cff1ad6c2024c9c38c6a70793024 Mon Sep 17 00:00:00 2001 From: Ben Lubar Date: Wed, 14 Oct 2026 14:50:49 -0500 Subject: [PATCH] Fix copy assignment operators for generated Variant classes causing memory corruption on self-assignment. --- binding_generator.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/binding_generator.py b/binding_generator.py index af26d3e4b..475eff065 100644 --- a/binding_generator.py +++ b/binding_generator.py @@ -1494,6 +1494,10 @@ def generate_builtin_class_source(builtin_api, size, used_classes, fully_used_cl # Copy assignment. if copy_constructor_index >= 0: result.append(f"{class_name} &{class_name}::operator=(const {class_name} &p_other) {{") + result.append("\tif (this == &p_other) {") + result.append("\t\treturn *this;") + result.append("\t}") + result.append("") if builtin_api["has_destructor"]: result.append("\t_method_bindings.destructor(&opaque);") (encode, arg_name) = get_encoded_arg(