From 23e9044b4e3df5f9ef03b873b2c09be046c93cb7 Mon Sep 17 00:00:00 2001 From: Ashish Kumar Date: Tue, 7 Nov 2017 12:04:03 +0530 Subject: [PATCH] GESAsset, GESLayer: add some function guards https://bugzilla.gnome.org/show_bug.cgi?id=789521 --- ges/ges-asset.c | 12 +++++++++++- ges/ges-layer.c | 9 +++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ges/ges-asset.c b/ges/ges-asset.c index 0419b9bcd6..6ff643cec6 100644 --- a/ges/ges-asset.c +++ b/ges/ges-asset.c @@ -641,6 +641,8 @@ gboolean ges_asset_request_id_update (GESAsset * asset, gchar ** proposed_id, GError * error) { + g_return_val_if_fail (GES_IS_ASSET (asset), FALSE); + return GES_ASSET_GET_CLASS (asset)->request_id_update (asset, proposed_id, error); } @@ -650,6 +652,8 @@ ges_asset_try_proxy (GESAsset * asset, const gchar * new_id) { GESAssetClass *class; + g_return_val_if_fail (GES_IS_ASSET (asset), FALSE); + if (g_strcmp0 (asset->priv->id, new_id) == 0) { GST_WARNING_OBJECT (asset, "Trying to proxy to itself (%s)," " NOT possible", new_id); @@ -868,7 +872,11 @@ ges_asset_set_id (GESAsset * asset, const gchar * id) gpointer orig_id = NULL; GESAssetCacheEntry *entry = NULL; - GESAssetPrivate *priv = asset->priv; + GESAssetPrivate *priv = NULL; + + g_return_if_fail (GES_IS_ASSET (asset)); + + priv = asset->priv; if (priv->state != ASSET_INITIALIZED) { GST_WARNING_OBJECT (asset, "Trying to rest ID on an object that is" @@ -935,6 +943,8 @@ _unsure_material_for_wrong_id (const gchar * wrong_id, GType extractable_type, GType ges_asset_get_extractable_type (GESAsset * self) { + g_return_val_if_fail (GES_IS_ASSET (self), G_TYPE_INVALID); + return self->priv->extractable_type; } diff --git a/ges/ges-layer.c b/ges/ges-layer.c index 3e4c1876c8..9863ce6869 100644 --- a/ges/ges-layer.c +++ b/ges/ges-layer.c @@ -268,6 +268,8 @@ ges_layer_resync_priorities (GESLayer * layer) { gint min_source_prios; + g_return_val_if_fail (GES_IS_LAYER (layer), FALSE); + GST_INFO_OBJECT (layer, "Resync priorities (prio: %d)", layer->priv->priority); @@ -342,6 +344,8 @@ ges_layer_get_duration (GESLayer * layer) GList *tmp; GstClockTime duration = 0; + g_return_val_if_fail (GES_IS_LAYER (layer), 0); + for (tmp = layer->priv->clips_start; tmp; tmp = tmp->next) { duration = MAX (duration, _END (tmp->data)); } @@ -728,6 +732,8 @@ ges_layer_set_timeline (GESLayer * layer, GESTimeline * timeline) { GList *tmp; + g_return_if_fail (GES_IS_LAYER (layer)); + GST_DEBUG ("layer:%p, timeline:%p", layer, timeline); for (tmp = layer->priv->clips_start; tmp; tmp = tmp->next) { @@ -755,6 +761,9 @@ ges_layer_get_clips_in_interval (GESLayer * layer, GstClockTime start, GList *intersecting_clips = NULL; GstClockTime clip_start, clip_end; gboolean clip_intersects; + + g_return_val_if_fail (GES_IS_LAYER (layer), NULL); + for (tmp = layer->priv->clips_start; tmp; tmp = tmp->next) { clip_intersects = FALSE; clip_start = ges_timeline_element_get_start (tmp->data);