Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15:Update
vte
vte-fix-memory-leaks.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File vte-fix-memory-leaks.patch of Package vte
From 1d200a63ac4e39035af35e80881aa4fdae5556c6 Mon Sep 17 00:00:00 2001 From: Christian Persch <chpe@src.gnome.org> Date: Sat, 18 Nov 2017 18:40:03 +0100 Subject: matcher: Fix memory leak Don't leak the GValueArray. https://bugzilla.gnome.org/show_bug.cgi?id=790539 (cherry picked from commit dda73cc07250ea324b4227907197c39b93fcd365) --- src/matcher.cc | 12 +++++++----- src/table.cc | 19 +++++++++++-------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/matcher.cc b/src/matcher.cc index 10f3bc7..a4f7584 100644 --- a/src/matcher.cc +++ b/src/matcher.cc @@ -202,14 +202,16 @@ _vte_matcher_print(struct _vte_matcher *matcher) * we need to free those ourselves. */ void _vte_matcher_free_params_array(struct _vte_matcher *matcher, - GValueArray *params) + GValueArray *params) { guint i; for (i = 0; i < params->n_values; i++) { - GValue *value = ¶ms->values[i]; - if (G_UNLIKELY (g_type_is_a (value->g_type, G_TYPE_POINTER))) { - g_free (g_value_get_pointer (value)); - } + auto value = g_value_array_get_nth(params, i); + if (G_UNLIKELY (G_VALUE_HOLDS_POINTER(value))) { + g_free(g_value_get_pointer(value)); + } else if (G_UNLIKELY (G_VALUE_HOLDS_BOXED(value))) { + g_value_array_free((GValueArray*)g_value_get_boxed(value)); + } } if (G_UNLIKELY (matcher == NULL || matcher->free_params != NULL)) { g_value_array_free (params); diff --git a/src/table.cc b/src/table.cc index 3c78f3a..09a6172 100644 --- a/src/table.cc +++ b/src/table.cc @@ -516,18 +516,14 @@ static void _vte_table_extract_numbers(GValueArray **array, struct _vte_table_arginfo *arginfo) { - GValue value = {0,}; - GValue subvalue = {0,}; - GValueArray *subarray = NULL; - gssize i; - if (G_UNLIKELY (*array == NULL)) { *array = g_value_array_new(1); } + GValue value = {0,}; g_value_init(&value, G_TYPE_LONG); - g_value_init(&subvalue, G_TYPE_VALUE_ARRAY); - i = 0; + gssize i = 0; + GValueArray *subarray = nullptr; do { long total = 0; for (; i < arginfo->length && arginfo->start[i] != ';' && arginfo->start[i] != ':'; i++) { @@ -546,13 +542,20 @@ _vte_table_extract_numbers(GValueArray **array, g_value_array_append(*array, &value); } else { g_value_array_append(subarray, &value); - g_value_set_boxed(&subvalue, subarray); + + GValue subvalue = {0,}; + g_value_init(&subvalue, G_TYPE_VALUE_ARRAY); + g_value_take_boxed(&subvalue, subarray); g_value_array_append(*array, &subvalue); + g_value_unset(&subvalue); + subarray = NULL; } } } while (i++ < arginfo->length); g_value_unset(&value); + if (subarray != nullptr) + g_value_array_free(subarray); } static void -- cgit v0.12 From ddd6dc998d9842369ec20f8e83c380401a8aed02 Mon Sep 17 00:00:00 2001 From: Christian Persch <chpe@src.gnome.org> Date: Sat, 18 Nov 2017 19:10:10 +0100 Subject: pty: Fix mem leak (cherry picked from commit 304e29d8a603828f42410ceac39ad803fcac475b) --- src/pty.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pty.cc b/src/pty.cc index c1741d2..0c0b001 100644 --- a/src/pty.cc +++ b/src/pty.cc @@ -1200,5 +1200,7 @@ vte_pty_spawn_finish(VtePty *pty, *child_pid = *(GPid*)pidptr; if (error) *error = nullptr; + + g_free(pidptr); return TRUE; } -- cgit v0.12
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor