From 2cd0f6fa3804c6749ecb4766e44944339e6c12a1 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Tue, 2 Jul 2019 01:54:47 +0300 Subject: [PATCH] Fix memory leaks in the map for std::string Signed-off-by: Dimitar Dobrev --- src/Generator/Types/Std/Stdlib.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Generator/Types/Std/Stdlib.cs b/src/Generator/Types/Std/Stdlib.cs index 01fcd284..ed87ad6d 100644 --- a/src/Generator/Types/Std/Stdlib.cs +++ b/src/Generator/Types/Std/Stdlib.cs @@ -325,7 +325,8 @@ namespace CppSharp.Types.Std assign.Name}({varBasicString}, {ctx.Parameter.Name});"); ctx.Return.Write($"{varBasicString}.{Helpers.InstanceIdentifier}"); if (!type.IsPointer()) - ctx.Cleanup.WriteLine($"{varBasicString}.Dispose(false);"); + ctx.Cleanup.WriteLine($@"{varBasicString}.Dispose({ + (ctx.MarshalKind == MarshalKind.NativeField ? "false" : string.Empty)});"); } } @@ -350,7 +351,8 @@ namespace CppSharp.Types.Std string varString = $"__stringRet{ctx.ParameterIndex}"; ctx.Before.WriteLine($@"var {varString} = { qualifiedBasicString}Extensions.{c_str.Name}({varBasicString});"); - ctx.Before.WriteLine($"{varBasicString}.Dispose(false);"); + ctx.Before.WriteLine($@"{varBasicString}.Dispose({ + (ctx.MarshalKind == MarshalKind.NativeField ? "false" : string.Empty)});"); ctx.Return.Write(varString); } }