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
ctx.Before.WriteLine($@"{qualifiedBasicString}Extensions.{ ctx.Before.WriteLine($@"{qualifiedBasicString}Extensions.{
assign.Name}({varBasicString}, {ctx.Parameter.Name});"); assign.Name}({varBasicString}, {ctx.Parameter.Name});");
ctx.Return.Write($"{varBasicString}.{Helpers.InstanceIdentifier}"); ctx.Return.Write($"{varBasicString}.{Helpers.InstanceIdentifier}");
if (!type.IsPointer()) if (!type.IsPointer() || ctx.Parameter.IsIndirect)
ctx.Cleanup.WriteLine($@"{varBasicString}.Dispose({ ctx.Cleanup.WriteLine($@"{varBasicString}.Dispose({
(ctx.MarshalKind == MarshalKind.NativeField ? "false" : string.Empty)});"); (ctx.MarshalKind == MarshalKind.NativeField ? "false" : string.Empty)});");
} }

Loading…
Cancel
Save