From 9802e74859219ae151cddb238f71016e3a2ef1ef Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 6 Nov 2013 23:18:55 +0100 Subject: DecoderInternal: lock DecoderControl in _flush_chunk() Must hold the Mutex to signal the Cond object safely. --- src/DecoderInternal.cxx | 2 ++ src/DecoderInternal.hxx | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/DecoderInternal.cxx b/src/DecoderInternal.cxx index 25d9c3f05..7cca5dbe3 100644 --- a/src/DecoderInternal.cxx +++ b/src/DecoderInternal.cxx @@ -101,5 +101,7 @@ decoder_flush_chunk(Decoder &decoder) decoder.chunk = nullptr; + dc.Lock(); dc.client_cond.signal(); + dc.Unlock(); } diff --git a/src/DecoderInternal.hxx b/src/DecoderInternal.hxx index ffe02ed7f..46069a561 100644 --- a/src/DecoderInternal.hxx +++ b/src/DecoderInternal.hxx @@ -108,6 +108,8 @@ decoder_get_chunk(Decoder &decoder); /** * Flushes the current chunk. + * + * Caller must not lock the #DecoderControl object. */ void decoder_flush_chunk(Decoder &decoder); -- cgit v1.2.3