From c2a569e24d38b09a9e6a537f667ebdbf2aa46587 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Fri, 13 Nov 2015 01:56:15 +0200 Subject: [PATCH] Only patched the v-table entries for non-dtors in user-derived classes. Signed-off-by: Dimitar Dobrev --- .../Generators/CSharp/CSharpTextTemplate.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Generator/Generators/CSharp/CSharpTextTemplate.cs b/src/Generator/Generators/CSharp/CSharpTextTemplate.cs index 9d58b7b8..c8fd9d0e 100644 --- a/src/Generator/Generators/CSharp/CSharpTextTemplate.cs +++ b/src/Generator/Generators/CSharp/CSharpTextTemplate.cs @@ -1426,7 +1426,17 @@ namespace CppSharp.Generators.CSharp private void GenerateVTableClassSetupCall(Class @class, bool destructorOnly = false) { if (@class.IsDynamic && GetUniqueVTableMethodEntries(@class).Count > 0) - WriteLine("SetupVTables({0});", destructorOnly ? "true" : string.Empty); + { + if (destructorOnly) + { + WriteLine("SetupVTables(true);"); + return; + } + var typeFullName = TypePrinter.VisitClassDecl(@class); + if (!string.IsNullOrEmpty(Driver.Options.OutputNamespace)) + typeFullName = string.Format("{0}.{1}", Driver.Options.OutputNamespace, typeFullName); + WriteLine("SetupVTables(GetType().FullName == \"{0}\");", typeFullName); + } } private void GenerateVTableManagedCall(Method method)