Browse Source

Fix generated constructor cant use `placement new` when class overloads `operator new` (#1431)

pull/1298/head
josetr 5 years ago committed by GitHub
parent
commit
3ffa42aa2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/Generator/Passes/SymbolsCodeGenerator.cs

4
src/Generator/Passes/SymbolsCodeGenerator.cs

@ -137,7 +137,7 @@ namespace CppSharp.Passes
p => cppTypePrinter.VisitParameter(p)))})"); p => cppTypePrinter.VisitParameter(p)))})");
WriteLine($": {@namespace}({@params}) {{}} }};"); WriteLine($": {@namespace}({@params}) {{}} }};");
Write($"extern \"C\" {{ void {wrapper}({signature}) "); Write($"extern \"C\" {{ void {wrapper}({signature}) ");
WriteLine($"{{ new ({Helpers.InstanceField}) {wrapper}{@namespace}({@params}); }} }}"); WriteLine($"{{ ::new ({Helpers.InstanceField}) {wrapper}{@namespace}({@params}); }} }}");
} }
else else
{ {
@ -146,7 +146,7 @@ namespace CppSharp.Passes
Write($@"{{ class {wrapper}{method.Namespace.Namespace.Name} : public { Write($@"{{ class {wrapper}{method.Namespace.Namespace.Name} : public {
method.Namespace.Namespace.Visit(cppTypePrinter)} "); method.Namespace.Namespace.Visit(cppTypePrinter)} ");
Write($"{{ void {wrapper}({signature}) "); Write($"{{ void {wrapper}({signature}) ");
Write($"{{ new ({Helpers.InstanceField}) {@namespace}({@params}); }} }}"); Write($"{{ ::new ({Helpers.InstanceField}) {@namespace}({@params}); }} }}");
if (method.Namespace.Access == AccessSpecifier.Protected) if (method.Namespace.Access == AccessSpecifier.Protected)
Write("; }"); Write("; }");
NewLine(); NewLine();

Loading…
Cancel
Save