Don't crash if pa_stream_peek returns NULL

pa_stream_peek can return NULL if either the buffer is empty or if it
has a hole. In either case we need to avoid derefencing the data
pointer. Additionally, if there is a hole, we need to call pa_stream_drop,
if the buffer is empty we should not call it.

BugLink: https://bugs.debian.org/735898
This commit is contained in:
Christer Stenbrenden 2014-10-22 20:38:21 -03:00 committed by Tanu Kaskinen
parent e83660bbd6
commit c71e9d5b51
1 changed files with 8 additions and 0 deletions

View File

@ -493,6 +493,14 @@ static void read_callback(pa_stream *s, size_t length, void *userdata) {
return; return;
} }
if (!data) {
/* NULL data means either a hole or empty buffer.
* Only drop the stream when there is a hole (length > 0) */
if (length)
pa_stream_drop(s);
return;
}
assert(length > 0); assert(length > 0);
assert(length % sizeof(float) == 0); assert(length % sizeof(float) == 0);