summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/xprops.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/core/xprops.c b/src/core/xprops.c
index ea869799..f1b21f00 100644
--- a/src/core/xprops.c
+++ b/src/core/xprops.c
@@ -652,21 +652,27 @@ text_property_to_utf8 (Display *xdisplay,
{
char *ret = NULL;
char **local_list = NULL;
+ const char *charset = NULL;
int count = 0;
int res;
res = XmbTextPropertyToTextList (xdisplay, prop, &local_list, &count);
if (res == XNoMemory || res == XLocaleNotSupported || res == XConverterNotFound)
- goto out;
+ return NULL;
if (count == 0)
- goto out;
-
- ret = g_strdup (local_list[0]);
+ {
+ XFreeStringList (local_list);
+ return NULL;
+ }
+
+ if (g_get_charset (&charset))
+ ret = g_strdup (local_list[0]);
+ else
+ ret = g_convert (local_list[0], -1, "UTF-8", charset, NULL, NULL, NULL);
- out:
- meta_XFree (local_list);
- return ret;
+ XFreeStringList (local_list);
+ return ret;
}
static gboolean