asfmux: Do not mess up GstCollectData list

asfmux was messing up with the GstCollectData list of its
GstCollectPads when sorting the list inplace. This patch makes
it copy the list before sorting it, leaving the GstCollectPads
list as is. Fixes #591610
This commit is contained in:
Thiago Santos 2009-08-12 18:33:22 -03:00
parent 4f61f46f07
commit c83615fca9
2 changed files with 4 additions and 5 deletions

View file

@ -1604,7 +1604,7 @@ gst_asf_mux_write_indexes (GstAsfMux * asfmux)
/* write simple indexes for video medias */ /* write simple indexes for video medias */
ordered_pads = ordered_pads =
g_slist_sort (asfmux->collect->data, g_slist_sort (g_slist_copy (asfmux->collect->data),
(GCompareFunc) stream_number_compare); (GCompareFunc) stream_number_compare);
for (walker = ordered_pads; walker; walker = g_slist_next (walker)) { for (walker = ordered_pads; walker; walker = g_slist_next (walker)) {
GstAsfPad *pad = (GstAsfPad *) walker->data; GstAsfPad *pad = (GstAsfPad *) walker->data;
@ -1613,10 +1613,12 @@ gst_asf_mux_write_indexes (GstAsfMux * asfmux)
if (ret != GST_FLOW_OK) { if (ret != GST_FLOW_OK) {
GST_ERROR_OBJECT (asfmux, "Failed to write simple index for stream %" GST_ERROR_OBJECT (asfmux, "Failed to write simple index for stream %"
G_GUINT16_FORMAT, (guint16) pad->stream_number); G_GUINT16_FORMAT, (guint16) pad->stream_number);
return ret; goto cleanup_and_return;
} }
} }
} }
cleanup_and_return:
g_slist_free (ordered_pads);
return ret; return ret;
} }

View file

@ -139,9 +139,6 @@ struct _GstAsfMux
/* pads */ /* pads */
GstPad *srcpad; GstPad *srcpad;
/* sinkpads, video first */
GSList *sinkpads;
GstCollectPads *collect; GstCollectPads *collect;
GstPadEventFunction collect_event; GstPadEventFunction collect_event;
}; };