From 251a84f0e5450a3b89385097c62be9285b45b62a Mon Sep 17 00:00:00 2001 From: rcaridade145 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 | 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 -- cgit v1.2.1