···349349 /// if this panics the drop implementation isn't right and the Audio Callback isn't cleaned up properly
350350 fn drop(&mut self) {
351351 self.deinit_audio();
352352+ let mut song = self.edit_song();
353353+ for i in 0..Song::<true>::MAX_SAMPLES {
354354+ song.apply_operation(SongOperation::RemoveSample(i)).unwrap();
355355+ }
356356+ song.finish();
357357+ // lock it once more to ensure that the changes were propagated
358358+ self.edit_song();
352359 // due to async feature
353360 #[allow(irrefutable_let_patterns)]
354361 if let ManageCollector::Internal(ref mut collector, _) = self.gc {
···370377// need manuallyDrop because i need consume on drop behaviour
371378pub struct SongEdit<'a> {
372379 song: WriteGuard<'a, Song<true>, ValidOperation>,
373373- // gc_handle: Handle,
374380 gc: &'a mut ManageCollector,
375381}
376382