From c71e9d5b516a16fc7f31c59bfc8dc75497136d69 Mon Sep 17 00:00:00 2001 From: Christer Stenbrenden Date: Wed, 22 Oct 2014 20:38:21 -0300 Subject: [PATCH] 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 --- src/mainwindow.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/mainwindow.cc b/src/mainwindow.cc index 5d205fb..ee288e8 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -493,6 +493,14 @@ static void read_callback(pa_stream *s, size_t length, void *userdata) { 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 % sizeof(float) == 0);