2009-09-30 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Wed, 30 Sep 2009 13:30:06 +0000 (13:30 -0000)
committerZoltan Varga <vargaz@gmail.com>
Wed, 30 Sep 2009 13:30:06 +0000 (13:30 -0000)
* pinvoke2.cs libtest.c: Add a test for #543133.

svn path=/trunk/mono/; revision=142998

mono/tests/ChangeLog
mono/tests/libtest.c
mono/tests/pinvoke2.cs

index 89a8c89f26a36fb6ed604a9f87bde3e89c2f6fbf..c63b293a23d63d0cfabb9ffe5791a2c396a050c6 100644 (file)
@@ -1,3 +1,7 @@
+2009-09-30  Zoltan Varga  <vargaz@gmail.com>
+
+       * pinvoke2.cs libtest.c: Add a test for #543133.
+
 2009-09-25  Mark Probst  <mark.probst@gmail.com>
 
        * xdomain-threads.c: Test for checking whether Thread is correctly
index ce8d99825669bb6cb43da3440dcf3d3c4162d92d..cc14592afa3609c4df54220371a49ad7f8f62158 100644 (file)
@@ -82,7 +82,7 @@ static gunichar2* marshal_bstr_alloc(const gchar* str)
 }
 
 LIBTEST_API int STDCALL
-mono_cominterop_is_supported ()
+mono_cominterop_is_supported (void)
 {
 #if defined(TARGET_X86) || defined(TARGET_AMD64)
        return 1;
@@ -996,6 +996,36 @@ mono_test_marshal_stringbuilder_unicode (gunichar2 *s, int n)
        return 0;
 }
 
+LIBTEST_API void STDCALL
+mono_test_marshal_stringbuilder_out (char **s)
+{
+       const char m[] = "This is my message.  Isn't it nice?";
+       char *str;
+
+       str = g_malloc (strlen (m) + 1);
+       memcpy (str, m, strlen (m) + 1);
+       
+       *s = str;
+}
+
+LIBTEST_API int STDCALL  
+mono_test_marshal_stringbuilder_out_unicode (gunichar2 **s)
+{
+       const char m[] = "This is my message.  Isn't it nice?";
+       gunichar2 *s2;
+       glong len;
+
+       s2 = g_utf8_to_utf16 (m, -1, NULL, &len, NULL);
+       
+       len = (len * 2) + 2;
+       *s = g_malloc (len);
+       memcpy (*s, s2, len);
+
+       g_free (s2);
+
+       return 0;
+}
+
 typedef struct {
 #ifndef __GNUC__
     char a;
index e24380a199c8e613f7ed3cc794b67f4c1a860325..10acef7457252e36db02d4090494d3dc4fc0bc27 100644 (file)
@@ -280,6 +280,12 @@ public class Tests {
        [DllImport ("libtest", EntryPoint="mono_test_marshal_stringbuilder_unicode", CharSet=CharSet.Unicode)]
        public static extern void mono_test_marshal_stringbuilder_unicode (StringBuilder sb, int len);
 
+       [DllImport ("libtest", EntryPoint="mono_test_marshal_stringbuilder_out")]
+       public static extern void mono_test_marshal_stringbuilder_out (out StringBuilder sb);
+
+       [DllImport ("libtest", EntryPoint="mono_test_marshal_stringbuilder_out_unicode", CharSet=CharSet.Unicode)]
+       public static extern void mono_test_marshal_stringbuilder_out_unicode (out StringBuilder sb);
+
        [DllImport ("libtest", EntryPoint="mono_test_last_error", SetLastError=true)]
        public static extern void mono_test_last_error (int err);
 
@@ -787,6 +793,24 @@ public class Tests {
                return 0;
        }
 
+       public static int test_0_marshal_stringbuilder_out () {
+               StringBuilder sb;
+               mono_test_marshal_stringbuilder_out (out sb);
+               
+               if (sb.ToString () != "This is my message.  Isn't it nice?")
+                       return 1;  
+               return 0;
+       }
+
+       public static int test_0_marshal_stringbuilder_out_unicode () {
+               StringBuilder sb;
+               mono_test_marshal_stringbuilder_out_unicode (out sb);
+
+               if (sb.ToString () != "This is my message.  Isn't it nice?")
+                       return 1;  
+               return 0;
+       }
+
        public static int test_0_marshal_empty_string_array () {
                return mono_test_marshal_empty_string_array (null);
        }