Fix calling base class of overridden scripting object via vtable entry for method that has multiple parameters

This commit is contained in:
Wojtek Figat
2021-07-12 16:38:39 +02:00
parent 0a47477290
commit 121b08801a
2 changed files with 3 additions and 2 deletions

View File

@@ -1013,7 +1013,7 @@ namespace Flax.Build.Bindings
contents.AppendLine(" {");
contents.AppendLine(" // Prevent stack overflow by calling native base method");
contents.AppendLine(" const auto scriptVTableBase = managedTypePtr->Script.ScriptVTableBase;");
contents.Append($" return (object->**({functionInfo.UniqueName}_Signature*)&scriptVTableBase[{scriptVTableIndex} + 2])(");
contents.Append($" return (this->**({functionInfo.UniqueName}_Internal_Signature*)&scriptVTableBase[{scriptVTableIndex} + 2])(");
separator = false;
for (var i = 0; i < functionInfo.Parameters.Count; i++)
{
@@ -1466,6 +1466,7 @@ namespace Flax.Build.Bindings
}
var t = functionInfo.IsConst ? " const" : string.Empty;
contents.AppendLine($" typedef {functionInfo.ReturnType} ({classInfo.NativeName}::*{functionInfo.UniqueName}_Signature)({thunkParams}){t};");
contents.AppendLine($" typedef {functionInfo.ReturnType} ({classInfo.NativeName}Internal::*{functionInfo.UniqueName}_Internal_Signature)({thunkParams}){t};");
}
contents.AppendLine("");

View File

@@ -49,7 +49,7 @@ namespace Flax.Build.Plugins
contents.AppendLine(" {");
contents.AppendLine(" // Prevent stack overflow by calling base method");
contents.AppendLine(" const auto scriptVTableBase = object->GetType().Script.ScriptVTableBase;");
contents.Append($" return (object->**({functionInfo.UniqueName}_Signature*)&scriptVTableBase[{scriptVTableIndex} + 2])(");
contents.Append($" return (this->**({functionInfo.UniqueName}_Internal_Signature*)&scriptVTableBase[{scriptVTableIndex} + 2])(");
separator = false;
for (var i = 0; i < functionInfo.Parameters.Count; i++)
{