asset: Avoid leaking the GParameter array and content

This commit is contained in:
Thibault Saunier 2012-12-29 17:52:42 -03:00
parent f722938ebf
commit 96d3afce6e
5 changed files with 15 additions and 7 deletions

View file

@ -275,11 +275,19 @@ ges_asset_extract_default (GESAsset * asset, GError ** error)
guint n_params;
GParameter *params;
GESAssetPrivate *priv = asset->priv;
GESExtractable *n_extractable;
params = ges_extractable_type_get_parameters_from_id (priv->extractable_type,
priv->id, &n_params);
return g_object_newv (priv->extractable_type, n_params, params);
n_extractable = g_object_newv (priv->extractable_type, n_params, params);
while (n_params--)
g_value_unset (&params[n_params].value);
if (params)
g_free (params);
return n_extractable;
}
static gboolean

View file

@ -71,17 +71,17 @@ extractable_get_parameters_from_id (const gchar * id, guint * n_params)
/* We already know that we have a valid ID here */
func_udata = g_strsplit (id, "!", -1);
params[0].name = g_strdup ("fill-func");
params[0].name = "fill-func";
g_value_init (&params[0].value, G_TYPE_POINTER);
g_value_set_pointer (&params[0].value,
GUINT_TO_POINTER (g_ascii_strtoll (func_udata[0], NULL, 10)));
params[1].name = g_strdup ("user-data");
params[1].name = "user-data";
g_value_init (&params[1].value, G_TYPE_POINTER);
g_value_set_pointer (&params[1].value,
GUINT_TO_POINTER (g_ascii_strtoll (func_udata[1], NULL, 10)));
params[2].name = g_strdup ("supported-formats");
params[2].name = "supported-formats";
g_value_init (&params[2].value, G_TYPE_ENUM);
g_value_set_enum (&params[2].value, GES_TRACK_TYPE_CUSTOM);

View file

@ -208,7 +208,7 @@ extractable_get_parameters_from_id (const gchar * id, guint * n_params)
{
GParameter *params = g_new0 (GParameter, 2);
params[0].name = g_strdup ("uri");
params[0].name = "uri";
g_value_init (&params[0].value, G_TYPE_STRING);
g_value_set_string (&params[0].value, id);

View file

@ -118,7 +118,7 @@ extractable_get_parameters_from_id (const gchar * id, guint * n_params)
GParameter *params = g_new0 (GParameter, 1);
GEnumValue *value = g_enum_get_value_by_nick (enum_class, id);
params[0].name = g_strdup ("vtype");
params[0].name = "vtype";
g_value_init (&params[0].value, GES_VIDEO_STANDARD_TRANSITION_TYPE_TYPE);
g_value_set_enum (&params[0].value, value->value);
*n_params = 1;

View file

@ -69,7 +69,7 @@ extractable_get_parameters_from_id (const gchar * id, guint * n_params)
{
GParameter *params = g_new0 (GParameter, 2);
params[0].name = g_strdup ("bin-description");
params[0].name = "bin-description";
g_value_init (&params[0].value, G_TYPE_STRING);
g_value_set_string (&params[0].value, id);