summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-04-21 21:05:51 +0200
committerLennart Poettering <lennart@poettering.net>2011-04-21 21:05:58 +0200
commit575ba65714ab85d81b0e520f348d78c2ae80a6f9 (patch)
tree3517f3f5969a1719d6e367c095f2d1fb722e37e0
parente5f547fe705c4e51cb09d72c2e1682d345c8f3e4 (diff)
memblockq: decode unset chunks as NULL chunks again
This fixes asserts beeing hit when see requests are posted via the native protocol.
-rw-r--r--src/pulsecore/asyncmsgq.c2
-rw-r--r--src/pulsecore/memchunk.c9
-rw-r--r--src/pulsecore/memchunk.h3
3 files changed, 13 insertions, 1 deletions
diff --git a/src/pulsecore/asyncmsgq.c b/src/pulsecore/asyncmsgq.c
index b0804f79..c211d9b0 100644
--- a/src/pulsecore/asyncmsgq.c
+++ b/src/pulsecore/asyncmsgq.c
@@ -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;
}
diff --git a/src/pulsecore/memchunk.c b/src/pulsecore/memchunk.c
index 0bbf8590..34317fe5 100644
--- a/src/pulsecore/memchunk.c
+++ b/src/pulsecore/memchunk.c
@@ -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;
+}
diff --git a/src/pulsecore/memchunk.h b/src/pulsecore/memchunk.h
index 9458f4ff..d7d82400 100644
--- a/src/pulsecore/memchunk.h
+++ b/src/pulsecore/memchunk.h
@@ -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