memblockq: decode unset chunks as NULL chunks again
authorLennart Poettering <lennart@poettering.net>
Thu, 21 Apr 2011 19:05:51 +0000 (21:05 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 21 Apr 2011 19:05:58 +0000 (21:05 +0200)
This fixes asserts beeing hit when see requests are posted via the
native protocol.

src/pulsecore/asyncmsgq.c
src/pulsecore/memchunk.c
src/pulsecore/memchunk.h

index b0804f7..c211d9b 100644 (file)
@@ -321,7 +321,7 @@ void pa_asyncmsgq_write_after_poll(pa_asyncmsgq *a) {
 int pa_asyncmsgq_dispatch(pa_msgobject *object, int code, void *userdata, int64_t offset, pa_memchunk *memchunk) {
 
     if (object)
-        return object->process_msg(object, code, userdata, offset, memchunk);
+        return object->process_msg(object, code, userdata, offset, pa_memchunk_isset(memchunk) ? memchunk : NULL);
 
     return 0;
 }
index 0bbf859..34317fe 100644 (file)
@@ -110,3 +110,12 @@ pa_memchunk* pa_memchunk_memcpy(pa_memchunk *dst, pa_memchunk *src) {
 
     return dst;
 }
+
+pa_bool_t pa_memchunk_isset(pa_memchunk *chunk) {
+    assert(chunk);
+
+    return
+        chunk->memblock ||
+        chunk->index > 0 ||
+        chunk->length > 0;
+}
index 9458f4f..d7d8240 100644 (file)
@@ -50,4 +50,7 @@ pa_memchunk *pa_memchunk_will_need(const pa_memchunk *c);
 /* Copy the data in the src memchunk to the dst memchunk */
 pa_memchunk* pa_memchunk_memcpy(pa_memchunk *dst, pa_memchunk *src);
 
+/* Return TRUE if any field is set != 0 */
+pa_bool_t pa_memchunk_isset(pa_memchunk *c);
+
 #endif