summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/mcalign.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pulsecore/mcalign.c')
-rw-r--r--src/pulsecore/mcalign.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/pulsecore/mcalign.c b/src/pulsecore/mcalign.c
index 9ede610d..aa2eae46 100644
--- a/src/pulsecore/mcalign.c
+++ b/src/pulsecore/mcalign.c
@@ -89,6 +89,7 @@ void pa_mcalign_push(pa_mcalign *m, const pa_memchunk *c) {
} else {
size_t l;
+ void *lo_data, *m_data;
/* We have to copy */
assert(m->leftover.length < m->base);
@@ -100,10 +101,15 @@ void pa_mcalign_push(pa_mcalign *m, const pa_memchunk *c) {
/* Can we use the current block? */
pa_memchunk_make_writable(&m->leftover, m->base);
- memcpy((uint8_t*) m->leftover.memblock->data + m->leftover.index + m->leftover.length, (uint8_t*) c->memblock->data + c->index, l);
+ lo_data = pa_memblock_acquire(m->leftover.memblock);
+ m_data = pa_memblock_acquire(c->memblock);
+ memcpy((uint8_t*) lo_data + m->leftover.index + m->leftover.length, (uint8_t*) m_data + c->index, l);
+ pa_memblock_release(m->leftover.memblock);
+ pa_memblock_release(c->memblock);
m->leftover.length += l;
- assert(m->leftover.length <= m->base && m->leftover.length <= m->leftover.memblock->length);
+ assert(m->leftover.length <= m->base);
+ assert(m->leftover.length <= pa_memblock_get_length(m->leftover.memblock));
if (c->length > l) {
/* Save the remainder of the memory block */