mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-07-16 15:10:23 +02:00
Fix a memleak
An early exit in expand_application_parameters forgot to free
a GString. Reported by Steve Grubb.
(cherry picked from commit b00c6d7fb5
)
This commit is contained in:
@@ -701,16 +701,18 @@ expand_application_parameters (GDesktopAppInfo *info,
|
||||
{
|
||||
GList *uri_list = *uris;
|
||||
const char *p = info->exec;
|
||||
GString *expanded_exec = g_string_new (NULL);
|
||||
GString *expanded_exec;
|
||||
gboolean res;
|
||||
|
||||
|
||||
if (info->exec == NULL)
|
||||
{
|
||||
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||
_("Desktop file didn't specify Exec field"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
expanded_exec = g_string_new (NULL);
|
||||
|
||||
while (*p)
|
||||
{
|
||||
if (p[0] == '%' && p[1] != '\0')
|
||||
@@ -720,10 +722,10 @@ expand_application_parameters (GDesktopAppInfo *info,
|
||||
}
|
||||
else
|
||||
g_string_append_c (expanded_exec, *p);
|
||||
|
||||
|
||||
p++;
|
||||
}
|
||||
|
||||
|
||||
/* No file substitutions */
|
||||
if (uri_list == *uris && uri_list != NULL)
|
||||
{
|
||||
@@ -731,7 +733,7 @@ expand_application_parameters (GDesktopAppInfo *info,
|
||||
g_string_append_c (expanded_exec, ' ');
|
||||
expand_macro ('f', expanded_exec, info, uris);
|
||||
}
|
||||
|
||||
|
||||
res = g_shell_parse_argv (expanded_exec->str, argc, argv, error);
|
||||
g_string_free (expanded_exec, TRUE);
|
||||
return res;
|
||||
|
Reference in New Issue
Block a user