diff --git a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs
index 78a6b6ea..6f382ebc 100644
--- a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs
+++ b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs
@@ -179,7 +179,8 @@ namespace CppSharp.Generators.CSharp
                 return isManagedContext ? "string" : "global::System.IntPtr";
 
             PrimitiveType primitive;
-            if (pointee.Desugar().IsPrimitiveType(out primitive))
+            var desugared = pointee.Desugar();
+            if (desugared.IsPrimitiveType(out primitive))
             {
                 if (isManagedContext && Context.Parameter != null &&
                     (Context.Parameter.IsOut || Context.Parameter.IsInOut))
@@ -191,7 +192,7 @@ namespace CppSharp.Generators.CSharp
             }
 
             Class @class;
-            if (pointee.IsTagDecl(out @class)
+            if (desugared.IsTagDecl(out @class)
                 && ContextKind == CSharpTypePrinterContextKind.Native)
             {
                 return "global::System.IntPtr";
diff --git a/tests/CSharpTemp/CSharpTemp.h b/tests/CSharpTemp/CSharpTemp.h
index 1d62fa39..8ed8de8d 100644
--- a/tests/CSharpTemp/CSharpTemp.h
+++ b/tests/CSharpTemp/CSharpTemp.h
@@ -51,3 +51,14 @@ public:
     typedef void *Baz::*FunctionPointerResolvedAsVoidStar;
     operator FunctionPointerResolvedAsVoidStar() const { return 0; }
 };
+
+struct QArrayData
+{
+};
+
+typedef QArrayData QByteArrayData;
+
+struct QByteArrayDataPtr
+{
+    QByteArrayData* ptr;
+};