gst_matroska_parse_take() would return FLOW_ERROR instead of
FLOW_EOS in case there's less data in the adapter than requested,
because buffer is NULL in that case which triggers the error
code path. This made the unit test fail (occasionally at least,
because of a bug in the unit test there's a race and it would
happen only sporadically).
ret = GST_FLOW_ERROR;
goto exit;
}
- if (gst_adapter_available (parse->common.adapter) >= bytes)
- buffer = gst_adapter_take_buffer (parse->common.adapter, bytes);
- else
- ret = GST_FLOW_EOS;
+ if (gst_adapter_available (parse->common.adapter) < bytes)
+ return GST_FLOW_EOS;
+
+ buffer = gst_adapter_take_buffer (parse->common.adapter, bytes);
if (G_LIKELY (buffer)) {
gst_ebml_read_init (ebml, GST_ELEMENT_CAST (parse), buffer,
parse->common.offset);
ret = GST_FLOW_ERROR;
}
exit:
+
return ret;
}