Browse Source

Fixed C# and CLI backends to check for null values when marshaling classes.

pull/222/head
triton 11 years ago
parent
commit
08255907de
  1. 3
      src/Generator/Generators/CLI/CLIMarshal.cs
  2. 4
      src/Generator/Generators/CSharp/CSharpMarshal.cs

3
src/Generator/Generators/CLI/CLIMarshal.cs

@ -235,7 +235,8 @@ namespace CppSharp.Generators.CLI
public void WriteClassInstance(Class @class, string instance) public void WriteClassInstance(Class @class, string instance)
{ {
if (@class.IsRefType) if (@class.IsRefType)
Context.Return.Write("gcnew "); Context.Return.Write("({0} == nullptr) ? nullptr : gcnew ",
instance);
Context.Return.Write("{0}(", QualifiedIdentifier(@class)); Context.Return.Write("{0}(", QualifiedIdentifier(@class));
Context.Return.Write("(::{0}*)", @class.QualifiedOriginalName); Context.Return.Write("(::{0}*)", @class.QualifiedOriginalName);

4
src/Generator/Generators/CSharp/CSharpMarshal.cs

@ -294,6 +294,10 @@ namespace CppSharp.Generators.CSharp
instance = instanceName; instance = instanceName;
} }
if (@class.IsRefType)
Context.Return.Write("({0} == IntPtr.Zero) ? null : ",
instance);
Context.Return.Write("new {0}({1})", Context.Return.Write("new {0}({1})",
QualifiedIdentifier(@class.OriginalClass ?? @class) + QualifiedIdentifier(@class.OriginalClass ?? @class) +
(Context.Driver.Options.GenerateAbstractImpls && @class.IsAbstract ? (Context.Driver.Options.GenerateAbstractImpls && @class.IsAbstract ?

Loading…
Cancel
Save