Blob Blame History Raw
From 251a84f0e5450a3b89385097c62be9285b45b62a Mon Sep 17 00:00:00 2001
From: rcaridade145 <rcaridade145@gmail.com>
Date: Sat, 11 Jan 2020 13:10:12 +0000
Subject: [PATCH 4/9] Xprops fix memory leak. Origin commit :
 https://gitlab.gnome.org/GNOME/metacity/commit/c87f73f3b4413720a2f3e6a672826d3fec7f77a9
 " XmbTextPropertyToTextList documentation says that XFreeStringList should be
 used to free the storage for the list and its contents. "

---
 src/core/xprops.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/core/xprops.c b/src/core/xprops.c
index 80dd7b59..938bdce4 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;
+  {
+	XFreeStringList (local_list);
+	return NULL;
+  }
 
-  ret = g_strdup (local_list[0]);
+  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
-- 
2.21.1