diff --git a/src/Generator/Types/Std/Stdlib.cs b/src/Generator/Types/Std/Stdlib.cs index 515b2f03..6eb17bb7 100644 --- a/src/Generator/Types/Std/Stdlib.cs +++ b/src/Generator/Types/Std/Stdlib.cs @@ -315,8 +315,9 @@ namespace CppSharp.Types.Std public override void CLIMarshalToNative(MarshalContext ctx) { - var marshal = ctx.MarshalToNative as CLIMarshalManagedToNativePrinter; - marshal.ArgumentPrefix.Write("*"); + var marshal = (CLIMarshalManagedToNativePrinter) ctx.MarshalToNative; + if (!ctx.Parameter.Type.Desugar().IsPointer()) + marshal.ArgumentPrefix.Write("*"); var marshalCtxName = string.Format("ctx_{0}", ctx.Parameter.Name); ctx.SupportBefore.WriteLine("msclr::interop::marshal_context {0};", marshalCtxName); ctx.Return.Write("{0}.marshal_as({1})", diff --git a/tests/STL/STL.h b/tests/STL/STL.h index e9c04dea..3220da3a 100644 --- a/tests/STL/STL.h +++ b/tests/STL/STL.h @@ -36,4 +36,9 @@ struct DLL_API OStreamTest { stream << s; }; -}; \ No newline at end of file + + static void WriteToOStreamPtr(std::ostream* stream, const char* s) + { + *stream << s; + }; +};