diff options
Diffstat (limited to 'src/music.rs')
-rw-r--r-- | src/music.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/music.rs b/src/music.rs index d44eabf..0f0f7e7 100644 --- a/src/music.rs +++ b/src/music.rs @@ -12,8 +12,13 @@ impl AudioCallback for Music { fn callback(&mut self, out_f: &mut [f32]) { let len = out_f.len(); - pcm_to_f32pcm(&self.pcm[self.offset..(self.offset + len)], out_f, len); + let slice = &self.pcm[self.offset..(self.offset + len).min(self.pcm.len() - 1)]; + let len = slice.len(); + pcm_to_f32pcm(&slice, out_f, len); self.offset += len; + if self.offset > self.pcm.len() { + self.offset = 0; + } } } |