decoder/Thread: clear the command after catching an exception
If an early exception gets caught (e.g. from AllocatedPath::FromUTF8Throw()) before DecoderControl::CommandFinishedLocked() is called, the decoder thread would go in an endless loop, because DecoderCommand::START is still set. Closes #118
This commit is contained in:
parent
ea80587ddb
commit
fa67c2548a
1
NEWS
1
NEWS
|
@ -5,6 +5,7 @@ ver 0.20.11 (not yet released)
|
||||||
- ffmpeg: more reliable song duration
|
- ffmpeg: more reliable song duration
|
||||||
- gme: fix track numbering
|
- gme: fix track numbering
|
||||||
* fix case insensitive search without libicu
|
* fix case insensitive search without libicu
|
||||||
|
* fix endless loop when accessing malformed file names in ZIP files
|
||||||
|
|
||||||
ver 0.20.10 (2017/08/24)
|
ver 0.20.10 (2017/08/24)
|
||||||
* decoder
|
* decoder
|
||||||
|
|
|
@ -508,6 +508,7 @@ try {
|
||||||
decoder_run_song(dc, song, uri_utf8, path_fs);
|
decoder_run_song(dc, song, uri_utf8, path_fs);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
dc.state = DecoderState::ERROR;
|
dc.state = DecoderState::ERROR;
|
||||||
|
dc.command = DecoderCommand::NONE;
|
||||||
dc.error = std::current_exception();
|
dc.error = std::current_exception();
|
||||||
dc.client_cond.signal();
|
dc.client_cond.signal();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue