Author: zoltan
Date: 2006-09-14 11:47:27 -0400 (Thu, 14 Sep 2006)
New Revision: 65410
Modified:
Log:
2006-09-14 Zoltan Varga <vargaz (AT) gmail (DOT) com>
* pinvoke2.cs libtest.c: Add test for marshalling of blittable classes and null.
Modified:
2006-09-14 15:47:04 UTC (rev 65409)
2006-09-14 15:47:27 UTC (rev 65410)
@@ -1,3 +1,7 @@
+2006-09-14 Zoltan Varga <vargaz (AT) gmail (DOT) com>
+
+* pinvoke2.cs libtest.c: Add test for marshalling of blittable classes and null.
+
2006-09-06 Zoltan Varga <vargaz (AT) gmail (DOT) com>
* pinvoke3.cs libtest.c: Add test for #79289.
Modified:
2006-09-14 15:47:04 UTC (rev 65409)
2006-09-14 15:47:27 UTC (rev 65410)
@@ -1148,20 +1148,26 @@
typedef struct {
int a;
int b;
-} VectorList;
+} BlittableClass;
-STDCALL VectorList*
-TestVectorList (VectorList *vl)
+STDCALL BlittableClass*
+TestBlittableClass (BlittableClass *vl)
{
-VectorList *res;
+BlittableClass *res;
-// printf ("TestVectorList %d %d\n", vl->a, vl->b);
+// printf ("TestBlittableClass %d %d\n", vl->a, vl->b);
-vl->a++;
-vl->b++;
+if (vl) {
+vl->a++;
+vl->b++;
-res = g_new0 (VectorList, 1);
-memcpy (res, vl, sizeof (VectorList));
+res = g_new0 (BlittableClass, 1);
+memcpy (res, vl, sizeof (BlittableClass));
+} else {
+res = g_new0 (BlittableClass, 1);
+res->a = 42;
+res->b = 43;
+}
return res;
}
Modified:
2006-09-14 15:47:04 UTC (rev 65409)
2006-09-14 15:47:27 UTC (rev 65410)
@@ -85,7 +85,7 @@
}
[StructLayout(LayoutKind.Sequential)]
-public class VectorList
+public class BlittableClass
{
public int a = 1;
public int b = 2;
@@ -988,19 +988,25 @@
/* Blittable class */
[DllImport("libtest")]
-private static extern VectorList TestVectorList (VectorList vl);
+private static extern BlittableClass TestBlittableClass (BlittableClass vl);
public static int test_0_marshal_blittable_class () {
-VectorList v1 = new VectorList ();
+BlittableClass v1 = new BlittableClass ();
/* Since it is blittable, it looks like it is passed as in/out */
-VectorList v2 = TestVectorList (v1);
+BlittableClass v2 = TestBlittableClass (v1);
if (v1.a != 2 || v1.b != 3)
return 1;
if (v2.a != 2 || v2.b != 3)
return 2;
+
+// Test null
+BlittableClass v3 = TestBlittableClass (null);
+
+if (v3.a != 42 || v3.b != 43)
+return 3;
return 0;
}
Mono-patches maillist - Mono-patches (AT) lists (DOT) ximian.com