make wavparse not segfault when somebody puts data at the end of the file

Original commit message from CVS:
make wavparse not segfault when somebody puts data at the end of the file
This commit is contained in:
Benjamin Otte 2003-05-17 16:09:59 +00:00
parent 01d4e568c6
commit 8e3c67b6df

View file

@ -243,8 +243,10 @@ gst_wavparse_chain (GstPad *pad, GstBuffer *buf)
/* we can't go beyond the max length */ /* we can't go beyond the max length */
maxsize = wavparse->riff_nextlikely - GST_BUFFER_OFFSET (buf); maxsize = wavparse->riff_nextlikely - GST_BUFFER_OFFSET (buf);
if (maxsize == 0) {
return;
} else if (maxsize < size) {
/* if we're expected to see a new chunk in this buffer */ /* if we're expected to see a new chunk in this buffer */
if (maxsize < size) {
GstBuffer *newbuf; GstBuffer *newbuf;
newbuf = gst_buffer_create_sub (buf, 0, maxsize); newbuf = gst_buffer_create_sub (buf, 0, maxsize);
@ -267,7 +269,7 @@ gst_wavparse_chain (GstPad *pad, GstBuffer *buf)
&GST_BUFFER_TIMESTAMP (buf)); &GST_BUFFER_TIMESTAMP (buf));
if (wavparse->need_discont) { if (wavparse->need_discont) {
if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) { if (buf && GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
gst_pad_push (wavparse->srcpad, gst_pad_push (wavparse->srcpad,
GST_BUFFER (gst_event_new_discontinuous (FALSE, GST_BUFFER (gst_event_new_discontinuous (FALSE,
GST_FORMAT_BYTES, wavparse->offset, GST_FORMAT_BYTES, wavparse->offset,
@ -282,9 +284,9 @@ gst_wavparse_chain (GstPad *pad, GstBuffer *buf)
wavparse->need_discont = FALSE; wavparse->need_discont = FALSE;
} }
gst_pad_push (wavparse->srcpad, buf); gst_pad_push (wavparse->srcpad, buf);
} } else {
else
gst_buffer_unref (buf); gst_buffer_unref (buf);
}
wavparse->offset += size; wavparse->offset += size;