summaryrefslogtreecommitdiffstats
path: root/binding_generator.py
diff options
context:
space:
mode:
authorDavid Snopek <dsnopek@gmail.com>2024-03-05 11:50:02 -0600
committerGitHub <noreply@github.com>2024-03-05 11:50:02 -0600
commitf444616553e1fe1d78f4129a287e812256faffd2 (patch)
tree5e988b4c3fe0cfbe4e8242cf13483905f2426c06 /binding_generator.py
parente55b792fea513b4c1f13939ca00c28e06b8d4454 (diff)
parentfc986c2d12a45f015372422bcb05fdb2935baa3d (diff)
downloadredot-cpp-f444616553e1fe1d78f4129a287e812256faffd2.tar.gz
Merge pull request #1404 from AThousandShips/virt_fix
Fix crash on virtual method calls
Diffstat (limited to 'binding_generator.py')
-rw-r--r--binding_generator.py7
1 files changed, 2 insertions, 5 deletions
diff --git a/binding_generator.py b/binding_generator.py
index cd2a86e..dbeb809 100644
--- a/binding_generator.py
+++ b/binding_generator.py
@@ -78,7 +78,8 @@ def generate_virtual_version(argcount, const=False, returns=False):
if (::godot::internal::gdextension_interface_object_has_script_method(_owner, &_gdvirtual_##m_name##_sn)) { \\
GDExtensionCallError ce;\\
$CALLSIARGS\\
- $CALLSIBEGIN::godot::internal::gdextension_interface_object_call_script_method(_owner, &_gdvirtual_##m_name##_sn, $CALLSIARGPASS, $CALLSIRETPASS, &ce);\\
+ Variant ret;\\
+ ::godot::internal::gdextension_interface_object_call_script_method(_owner, &_gdvirtual_##m_name##_sn, $CALLSIARGPASS, &ret, &ce);\\
if (ce.error == GDEXTENSION_CALL_OK) {\\
$CALLSIRET\\
return true;\\
@@ -160,12 +161,8 @@ def generate_virtual_version(argcount, const=False, returns=False):
if argcount > 0:
callargtext += ", "
callargtext += "m_ret &r_ret"
- s = s.replace("$CALLSIBEGIN", "Variant ret;\\\n\t\t\t")
- s = s.replace("$CALLSIRETPASS", "&ret")
s = s.replace("$CALLSIRET", "r_ret = VariantCaster<m_ret>::cast(ret);")
else:
- s = s.replace("$CALLSIBEGIN", "")
- s = s.replace("$CALLSIRETPASS", "nullptr")
s = s.replace("\t\t\t\t$CALLSIRET\\\n", "")
s = s.replace(" $ARG", argtext)