From ae07474bb234935041fbed9fa83e2d9dd92c3c91 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 27 Jan 2003 20:23:55 +0000 Subject: [PATCH] - Add error reporting Original commit message from CVS: - Add error reporting - never return a NULL buffer --- sys/oss/gstosssrc.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/sys/oss/gstosssrc.c b/sys/oss/gstosssrc.c index eed9488817..bf93e62fb0 100644 --- a/sys/oss/gstosssrc.c +++ b/sys/oss/gstosssrc.c @@ -25,7 +25,9 @@ #include #include #include +#include #include +#include #include #include @@ -258,22 +260,31 @@ gst_osssrc_get (GstPad *pad) readbytes = read (src->common.fd,GST_BUFFER_DATA (buf), src->buffersize); + if (readbytes < 0) { + gst_buffer_unref (buf); + gst_element_error (GST_ELEMENT (src), "error reading data (%s)", + strerror (errno)); + return GST_BUFFER (gst_event_new (GST_EVENT_INTERRUPT)); + } if (readbytes == 0) { + gst_buffer_unref (buf); gst_element_set_eos (GST_ELEMENT (src)); - return NULL; + return GST_BUFFER (gst_event_new (GST_EVENT_INTERRUPT)); } if (!GST_PAD_CAPS (pad)) { /* nothing was negotiated, we can decide on a format */ if (!gst_osssrc_negotiate (pad)) { + gst_buffer_unref (buf); gst_element_error (GST_ELEMENT (src), "could not negotiate format"); - return NULL; + return GST_BUFFER (gst_event_new (GST_EVENT_INTERRUPT)); } } if (src->common.bps == 0) { + gst_buffer_unref (buf); gst_element_error (GST_ELEMENT (src), "no format negotiated"); - return NULL; + return GST_BUFFER (gst_event_new (GST_EVENT_INTERRUPT)); } GST_BUFFER_SIZE (buf) = readbytes;