Browse Source

Fix a memory leak when passing an indirect std::string

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
bug-pass-const-char-star-no-copy
Dimitar Dobrev 6 years ago
parent
commit
49ab0227f9
  1. 2
      src/Generator/Types/Std/Stdlib.cs

2
src/Generator/Types/Std/Stdlib.cs

@ -324,7 +324,7 @@ namespace CppSharp.Types.Std @@ -324,7 +324,7 @@ namespace CppSharp.Types.Std
ctx.Before.WriteLine($@"{qualifiedBasicString}Extensions.{
assign.Name}({varBasicString}, {ctx.Parameter.Name});");
ctx.Return.Write($"{varBasicString}.{Helpers.InstanceIdentifier}");
if (!type.IsPointer())
if (!type.IsPointer() || ctx.Parameter.IsIndirect)
ctx.Cleanup.WriteLine($@"{varBasicString}.Dispose({
(ctx.MarshalKind == MarshalKind.NativeField ? "false" : string.Empty)});");
}

Loading…
Cancel
Save