The old code makes no sense to me. Why would multiple references mean that a previously read-only memblock is suddenly writable? I'm pretty sure that the original intention was to treat multi-referenced blocks as read-only. I don't have any examples where the old code would have caused bad behaviour, however. --- src/pulsecore/memblock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pulsecore/memblock.c b/src/pulsecore/memblock.c index 17520ed..babe5cd 100644 --- a/src/pulsecore/memblock.c +++ b/src/pulsecore/memblock.c @@ -497,7 +497,7 @@ bool pa_memblock_is_read_only(pa_memblock *b) { pa_assert(b); pa_assert(PA_REFCNT_VALUE(b) > 0); - return b->read_only && PA_REFCNT_VALUE(b) == 1; + return b->read_only || PA_REFCNT_VALUE(b) > 1; } /* No lock necessary */ -- 2.8.1