gst_single_object_iterator_iterator_next (GstSingleObjectIterator * it,
gpointer * result)
{
- if (it->visited) {
+ if (it->visited || !it->object) {
*result = NULL;
return GST_ITERATOR_DONE;
}
static void
gst_single_object_iterator_free (GstSingleObjectIterator * it)
{
- it->free (it->object);
+ if (it->object)
+ it->free (it->object);
g_free (it);
}
{
GstSingleObjectIterator *result;
- g_return_val_if_fail (object != NULL, NULL);
g_return_val_if_fail (copy != NULL, NULL);
g_return_val_if_fail (free != NULL, NULL);
(GstIteratorResyncFunction) gst_single_object_iterator_resync,
(GstIteratorFreeFunction) gst_single_object_iterator_free);
- result->object = copy (object);
+ result->object = (object) ? copy (object) : NULL;
result->copy = copy;
result->free = free;
result->visited = FALSE;