From 0c748e0d1ce08e9c7a13a4bf84a0ac43d79ffcdf Mon Sep 17 00:00:00 2001
From: rcaridade145 <rcaridade145@gmail.com>
Date: Sat, 11 Jan 2020 13:10:12 +0000
Subject: 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 | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

(limited to 'src/core')

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
-- 
cgit v1.2.1