summaryrefslogtreecommitdiff
path: root/ext/ogg/gstoggdemux.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ogg/gstoggdemux.c')
-rw-r--r--ext/ogg/gstoggdemux.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/ext/ogg/gstoggdemux.c b/ext/ogg/gstoggdemux.c
index 5307521fb..084d5d5f0 100644
--- a/ext/ogg/gstoggdemux.c
+++ b/ext/ogg/gstoggdemux.c
@@ -4966,11 +4966,23 @@ gst_ogg_demux_clear_chains (GstOggDemux * ogg)
for (i = 0; i < ogg->chains->len; i++) {
GstOggChain *chain = g_array_index (ogg->chains, GstOggChain *, i);
+ if (chain == ogg->current_chain)
+ ogg->current_chain = NULL;
+ if (chain == ogg->building_chain)
+ ogg->building_chain = NULL;
gst_ogg_chain_free (chain);
}
ogg->chains = g_array_set_size (ogg->chains, 0);
- ogg->current_chain = NULL;
- ogg->building_chain = NULL;
+ if (ogg->current_chain != NULL) {
+ GST_FIXME_OBJECT (ogg, "current chain was tracked in existing chains !");
+ gst_ogg_chain_free (ogg->current_chain);
+ ogg->current_chain = NULL;
+ }
+ if (ogg->building_chain != NULL) {
+ GST_FIXME_OBJECT (ogg, "building chain was tracked in existing chains !");
+ gst_ogg_chain_free (ogg->building_chain);
+ ogg->building_chain = NULL;
+ }
GST_CHAIN_UNLOCK (ogg);
}