]> Pileus Git - ~andy/gtk/commitdiff
Fix gdk_x11_display_text_property_to_text_list
authorMatthias Clasen <mclasen@redhat.com>
Fri, 24 Dec 2010 21:27:31 +0000 (16:27 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 24 Dec 2010 21:27:31 +0000 (16:27 -0500)
This was an incomplete attempt to get rid of the custom free function.
Lets just keep it for now. Bug 637849, patch by Dan Winship.

Also add a test case for this function.

gdk/tests/Makefile.am
gdk/tests/encoding.c [new file with mode: 0644]
gdk/x11/gdkselection-x11.c

index 9a7531421e4e939297b568c3b8bfbbfb5fd4a4c8..e23df125572e3c97fa4cf9be6165bee8bb4c1d9e 100644 (file)
@@ -23,6 +23,10 @@ TEST_PROGS        += gdk-color
 gdk_color_SOURCES  = gdk-color.c
 gdk_color_LDADD    = $(progs_ldadd)
 
+TEST_PROGS        += encoding
+encoding_SOURCES  = encoding.c
+encoding_LDADD    = $(progs_ldadd)
+
 CLEANFILES = \
        cairosurface.png        \
        gdksurface.png
diff --git a/gdk/tests/encoding.c b/gdk/tests/encoding.c
new file mode 100644 (file)
index 0000000..e1d0307
--- /dev/null
@@ -0,0 +1,46 @@
+#include <gdk/gdk.h>
+#ifdef GDK_WINDOWING_X11
+#include "x11/gdkx.h"
+#endif
+
+static void
+test_to_text_list (void)
+{
+  GdkDisplay *display;
+
+  display = gdk_display_get_default ();
+
+#ifdef GDK_WINDOWING_X11
+  if (GDK_IS_X11_DISPLAY (display))
+    {
+      GdkAtom encoding;
+      gint format;
+      const guchar *text;
+      gint length;
+      gchar **list;
+      gint n;
+
+      encoding = gdk_atom_intern ("UTF8_STRING", FALSE);
+      format = 8;
+      text = (const guchar*)"abcdef \304\201 \304\205\0ABCDEF \304\200 \304\204";
+      length = 25;
+      n = gdk_x11_display_text_property_to_text_list (display, encoding, format, text, length, &list);
+      g_assert_cmpint (n, ==, 2);
+      g_assert (g_str_has_prefix (list[0], "abcdef "));
+      g_assert (g_str_has_prefix (list[1], "ABCDEF "));
+
+      gdk_x11_free_text_list (list);
+    }
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+  gdk_init (&argc, &argv);
+
+  g_test_add_func ("/encoding/to-text-list", test_to_text_list);
+
+  return g_test_run ();
+}
index 5a0dfeac0fa7296cd9abd5dcfa3a1040def1865b..f13207b95554857822c6dd85306341cb3e299fcc 100644 (file)
@@ -340,7 +340,7 @@ _gdk_x11_display_send_selection_notify (GdkDisplay       *display,
  * @format: the format of the property
  * @text: The text data
  * @length: The number of items to transform
- * @list: location to store a terminated array of strings in
+ * @list: location to store a array of strings in
  *    the encoding of the current locale. This array should be
  *    freed using gdk_free_text_list().
  *
@@ -385,7 +385,7 @@ gdk_x11_display_text_property_to_text_list (GdkDisplay   *display,
   else
     {
       if (list)
-        *list = g_strdupv (local_list);
+        *list = local_list;
       else
         XFreeStringList (local_list);