fix bug where plugin would crash if decoder hits unexpected end of file
diff --git a/src/plugin_winamp2/in_flac.c b/src/plugin_winamp2/in_flac.c
index d172aca..003c017 100644
--- a/src/plugin_winamp2/in_flac.c
+++ b/src/plugin_winamp2/in_flac.c
@@ -276,8 +276,11 @@
done = 1;
break;
}
- else if(!FLAC__file_decoder_process_one_frame(decoder_))
+ else if(!FLAC__file_decoder_process_one_frame(decoder_)) {
+ MessageBox(mod_.hMainWindow, FLAC__FileDecoderStateString[FLAC__file_decoder_get_state(decoder_)], "READ ERROR processing frame", 0);
+ done = 1;
break;
+ }
}
if (samples_in_reservoir_ == 0) {
diff --git a/src/plugin_winamp3/flacpcm.cpp b/src/plugin_winamp3/flacpcm.cpp
index c35f7d8..88c73b6 100644
--- a/src/plugin_winamp3/flacpcm.cpp
+++ b/src/plugin_winamp3/flacpcm.cpp
@@ -152,8 +152,11 @@
eof = true;
break;
}
- else if(!FLAC__seekable_stream_decoder_process_one_frame(decoder))
+ else if(!FLAC__seekable_stream_decoder_process_one_frame(decoder)) {
+ //@@@ how to do this? MessageBox(mod_.hMainWindow, FLAC__FileDecoderStateString[FLAC__file_decoder_get_state(decoder_)], "READ ERROR processing frame", 0);
+ eof = true;
break;
+ }
}
if(samples_in_reservoir == 0) {
diff --git a/src/plugin_xmms/plugin.c b/src/plugin_xmms/plugin.c
index 61f185f..6052182 100644
--- a/src/plugin_xmms/plugin.c
+++ b/src/plugin_xmms/plugin.c
@@ -307,8 +307,12 @@
file_info_.eof = true;
break;
}
- else if(!FLAC__file_decoder_process_one_frame(decoder_))
+ else if(!FLAC__file_decoder_process_one_frame(decoder_)) {
+ /*@@@ this should probably be a dialog */
+ fprintf(stderr, "libxmms-flac: READ ERROR processing frame\n");
+ file_info_.eof = true;
break;
+ }
}
if(reservoir_samples_ > 0) {
const unsigned channels = file_info_.channels;