aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pcm_buffer.c5
-rw-r--r--src/pcm_buffer.h4
2 files changed, 9 insertions, 0 deletions
diff --git a/src/pcm_buffer.c b/src/pcm_buffer.c
index b0449d44e..60a699b20 100644
--- a/src/pcm_buffer.c
+++ b/src/pcm_buffer.c
@@ -34,6 +34,11 @@ pcm_buffer_get(struct pcm_buffer *buffer, size_t size)
{
assert(buffer != NULL);
+ if (size == 0)
+ /* never return NULL, because NULL would be assumed to
+ be an error condition */
+ size = 1;
+
if (buffer->size < size) {
/* free the old buffer */
g_free(buffer->buffer);
diff --git a/src/pcm_buffer.h b/src/pcm_buffer.h
index fe223c742..b132d4fd2 100644
--- a/src/pcm_buffer.h
+++ b/src/pcm_buffer.h
@@ -63,6 +63,10 @@ pcm_buffer_deinit(struct pcm_buffer *buffer)
/**
* Get the buffer, and guarantee a minimum size. This buffer becomes
* invalid with the next pcm_buffer_get() call.
+ *
+ * This function will never return NULL, even if size is zero, because
+ * the PCM library uses the NULL return value to signal "error". An
+ * empty destination buffer is not always an error.
*/
G_GNUC_MALLOC
void *