diff --git a/src/Generator/Generators/CSharp/CSharpMarshal.cs b/src/Generator/Generators/CSharp/CSharpMarshal.cs index 08de1719..b228c0d5 100644 --- a/src/Generator/Generators/CSharp/CSharpMarshal.cs +++ b/src/Generator/Generators/CSharp/CSharpMarshal.cs @@ -344,8 +344,9 @@ namespace CppSharp.Generators.CSharp var pointee = pointer.Pointee; Type type = pointee.Desugar(); - if (type.IsPrimitiveType(PrimitiveType.Char) || - type.IsPrimitiveType(PrimitiveType.WideChar)) + if ((type.IsPrimitiveType(PrimitiveType.Char) || + type.IsPrimitiveType(PrimitiveType.WideChar)) && + pointer.QualifiedPointee.Qualifiers.IsConst) { Context.Return.Write("Marshal.StringToHGlobalAnsi({0})", Helpers.SafeIdentifier(Context.Parameter.Name)); diff --git a/tests/Basic/Basic.cpp b/tests/Basic/Basic.cpp index 5e3bbfe0..7f6242f5 100644 --- a/tests/Basic/Basic.cpp +++ b/tests/Basic/Basic.cpp @@ -71,7 +71,7 @@ int Hello::RetEnum(Enum e) return (int)e; } -int unsafeFunction(const Bar& ret) +int unsafeFunction(const Bar& ret, char* testForString) { return ret.A; } @@ -82,4 +82,4 @@ Bar operator+(const Bar& b1, const Bar& b2) b.A = b1.A + b2.A; b.B = b1.B + b2.B; return b; -} \ No newline at end of file +} diff --git a/tests/Basic/Basic.h b/tests/Basic/Basic.h index 1158d450..11334939 100644 --- a/tests/Basic/Basic.h +++ b/tests/Basic/Basic.h @@ -73,4 +73,4 @@ public: DLL_API Bar operator+(const Bar &, const Bar &); -int DLL_API unsafeFunction(const Bar& ret); +int DLL_API unsafeFunction(const Bar& ret, char* testForString);