mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 07:26:15 +01:00
gparam: fix memory leak in g_param_value_defaults()
We cannot just call
G_PARAM_SPEC_GET_CLASS (pspec)->value_set_default (pspec, &dflt_value);
without initializing the GValue first. It would call
param_string_set_default(), which would set the pointer value
to a cloned string (which later never gets released, because
the GValue is not known to hold a string).
Fixes: 6ad799ac67
This commit is contained in:
parent
b43bfcaa68
commit
3a9bdcf704
@ -640,6 +640,7 @@ g_param_value_defaults (GParamSpec *pspec,
|
|||||||
g_return_val_if_fail (G_IS_VALUE (value), FALSE);
|
g_return_val_if_fail (G_IS_VALUE (value), FALSE);
|
||||||
g_return_val_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value), FALSE);
|
g_return_val_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value), FALSE);
|
||||||
|
|
||||||
|
g_value_init (&dflt_value, G_PARAM_SPEC_VALUE_TYPE (pspec));
|
||||||
G_PARAM_SPEC_GET_CLASS (pspec)->value_set_default (pspec, &dflt_value);
|
G_PARAM_SPEC_GET_CLASS (pspec)->value_set_default (pspec, &dflt_value);
|
||||||
defaults = G_PARAM_SPEC_GET_CLASS (pspec)->values_cmp (pspec, value, &dflt_value) == 0;
|
defaults = G_PARAM_SPEC_GET_CLASS (pspec)->values_cmp (pspec, value, &dflt_value) == 0;
|
||||||
g_value_unset (&dflt_value);
|
g_value_unset (&dflt_value);
|
||||||
|
Loading…
Reference in New Issue
Block a user