diff --git a/src/decoder/DecoderThread.cxx b/src/decoder/DecoderThread.cxx index 694c95e66..e55b2ab69 100644 --- a/src/decoder/DecoderThread.cxx +++ b/src/decoder/DecoderThread.cxx @@ -439,7 +439,7 @@ decoder_run_song(DecoderControl &dc, */ static void decoder_run(DecoderControl &dc) -{ +try { dc.ClearError(); assert(dc.song != nullptr); @@ -463,7 +463,10 @@ decoder_run(DecoderControl &dc) } decoder_run_song(dc, song, uri_utf8, path_fs); - +} catch (...) { + dc.state = DecoderState::ERROR; + dc.error = std::current_exception(); + dc.client_cond.signal(); } static void