Skip to content

Commit 2cd0f6f

Browse files
committed
Fix memory leaks in the map for std::string
Signed-off-by: Dimitar Dobrev <[email protected]>
1 parent 547a9f2 commit 2cd0f6f

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/Generator/Types/Std/Stdlib.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,8 @@ public override void CSharpMarshalToNative(CSharpMarshalContext ctx)
325325
assign.Name}({varBasicString}, {ctx.Parameter.Name});");
326326
ctx.Return.Write($"{varBasicString}.{Helpers.InstanceIdentifier}");
327327
if (!type.IsPointer())
328-
ctx.Cleanup.WriteLine($"{varBasicString}.Dispose(false);");
328+
ctx.Cleanup.WriteLine($@"{varBasicString}.Dispose({
329+
(ctx.MarshalKind == MarshalKind.NativeField ? "false" : string.Empty)});");
329330
}
330331
}
331332

@@ -350,7 +351,8 @@ public override void CSharpMarshalToManaged(CSharpMarshalContext ctx)
350351
string varString = $"__stringRet{ctx.ParameterIndex}";
351352
ctx.Before.WriteLine($@"var {varString} = {
352353
qualifiedBasicString}Extensions.{c_str.Name}({varBasicString});");
353-
ctx.Before.WriteLine($"{varBasicString}.Dispose(false);");
354+
ctx.Before.WriteLine($@"{varBasicString}.Dispose({
355+
(ctx.MarshalKind == MarshalKind.NativeField ? "false" : string.Empty)});");
354356
ctx.Return.Write(varString);
355357
}
356358
}

0 commit comments

Comments
 (0)