@@ -76,7 +76,7 @@ pub fn get_samples_f32(reader: &mut wav_io::reader::Reader) -> Result<Vec<f32>,
7676 let size = reader. read_u32 ( ) . unwrap_or ( 0 ) as u64 ;
7777 // todo: check tag
7878 // println!("[info] tag={:?}::{}", chunk_tag, size);
79- if size == 0 {
79+ if size == 0 && chunk_tag != "data" {
8080 continue ;
8181 }
8282 // data?
@@ -87,7 +87,7 @@ pub fn get_samples_f32(reader: &mut wav_io::reader::Reader) -> Result<Vec<f32>,
8787 // read wav data
8888 let h = & reader. header . clone ( ) . unwrap ( ) ;
8989
90- let bytes_to_read = if size == 0xFFFFFFFF {
90+ let bytes_to_read = if size == 0xFFFFFFFF || size == 0 {
9191 let current_pos = reader. cur . position ( ) ;
9292 let file_len = reader. cur . get_ref ( ) . len ( ) as u64 ;
9393 file_len. saturating_sub ( current_pos)
@@ -184,7 +184,7 @@ pub fn get_samples_i16(reader: &mut wav_io::reader::Reader) -> Result<Vec<i16>,
184184 let size = reader. read_u32 ( ) . unwrap_or ( 0 ) as u64 ;
185185 // todo: check tag
186186 // println!("[info] tag={:?}::{}", chunk_tag, size);
187- if size == 0 {
187+ if size == 0 && chunk_tag != "data" {
188188 continue ;
189189 }
190190 // data?
@@ -195,7 +195,7 @@ pub fn get_samples_i16(reader: &mut wav_io::reader::Reader) -> Result<Vec<i16>,
195195 // read wav data
196196 let h = & reader. header . clone ( ) . unwrap ( ) ;
197197
198- let bytes_to_read = if size == 0xFFFFFFFF {
198+ let bytes_to_read = if size == 0xFFFFFFFF || size == 0 {
199199 let current_pos = reader. cur . position ( ) ;
200200 let file_len = reader. cur . get_ref ( ) . len ( ) as u64 ;
201201 file_len. saturating_sub ( current_pos)
0 commit comments