summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-11-06 23:18:55 +0100
committerMax Kellermann <max@duempel.org>2013-11-06 23:51:17 +0100
commit9802e74859219ae151cddb238f71016e3a2ef1ef (patch)
treef1dcd4d13323a4806fd153c3a7a391a994dbede2
parent8e7d6eb1518f87926b6d1c34b9ca48e4b5836198 (diff)
DecoderInternal: lock DecoderControl in _flush_chunk()
Must hold the Mutex to signal the Cond object safely.
-rw-r--r--src/DecoderInternal.cxx2
-rw-r--r--src/DecoderInternal.hxx2
2 files changed, 4 insertions, 0 deletions
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);