xprops: Make sure text_property_to_utf8() returns UTF8

Commit 840378ae68 changed the code to use XmbTextPropertyToTextList()
instead of gdk_text_property_to_utf8_list_for_display(), but didn't
take into account that the replacement returns text in the current
locale's encoding, while any callers (rightfully) expect UTF8.

Fix this by converting the text if necessary.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/227


(cherry picked from commit 76abe87090)
This commit is contained in:
Florian Müllner 2018-10-08 22:29:01 +00:00 committed by Marco Trevisan
parent d9cc8530ec
commit fe4c3aa6b5

View File

@ -637,6 +637,7 @@ text_property_to_utf8 (Display *xdisplay,
{ {
char *ret = NULL; char *ret = NULL;
char **local_list = NULL; char **local_list = NULL;
const char *charset = NULL;
int count = 0; int count = 0;
int res; int res;
@ -647,7 +648,10 @@ text_property_to_utf8 (Display *xdisplay,
if (count == 0) if (count == 0)
goto out; goto out;
if (g_get_charset (&charset))
ret = g_strdup (local_list[0]); ret = g_strdup (local_list[0]);
else
ret = g_convert (local_list[0], -1, "UTF-8", charset, NULL, NULL, NULL);
out: out:
XFreeStringList (local_list); XFreeStringList (local_list);