@@ -330,10 +330,8 @@ extern "C" fn release_callback<D: Dsp>(dsp_state: *mut FMOD_DSP_STATE) -> FMOD_R
330330 unsafe {
331331 CUR_STATE = dsp_state;
332332 let x = ( * dsp_state) . plugindata as * mut D ;
333- drop ( ptr:: read ( x ) ) ;
333+ ptr:: drop_in_place ( x ) ;
334334 alloc:: dealloc ( x as * mut u8 , Layout :: new :: < D > ( ) ) ;
335- //(*(*dsp_state).functions).free.unwrap()(x, FMOD_MEMORY_NORMAL, DBGSTR.as_ptr() as *const _);
336- //(*dsp_state).plugindata = ptr::null_mut();
337335 CUR_STATE = ptr:: null_mut ( ) ;
338336 }
339337 FMOD_OK
@@ -435,10 +433,12 @@ extern "C" fn process_callback<D: Dsp>(
435433 let proc = panic:: catch_unwind ( || {
436434 let data = & mut * ( ( * dsp_state) . plugindata as * mut D ) ;
437435 if op == FMOD_DSP_PROCESS_OPERATION :: FMOD_DSP_PROCESS_QUERY {
438- ( * out_buffers) . speakermode = FMOD_SPEAKERMODE :: FMOD_SPEAKERMODE_STEREO ;
439- * ( * out_buffers) . bufferchannelmask = 0 ;
440- if let Some ( channels) = data. preferred_out_channels ( ) {
441- * ( * out_buffers) . buffernumchannels = channels as c_int ;
436+ if !out_buffers. is_null ( ) {
437+ ( * out_buffers) . speakermode = FMOD_SPEAKERMODE :: FMOD_SPEAKERMODE_STEREO ;
438+ * ( * out_buffers) . bufferchannelmask = 0 ;
439+ if let Some ( channels) = data. preferred_out_channels ( ) {
440+ * ( * out_buffers) . buffernumchannels = channels as c_int ;
441+ }
442442 }
443443 match D :: ty ( ) {
444444 DspType :: Generator => FMOD_OK ,
@@ -449,13 +449,13 @@ extern "C" fn process_callback<D: Dsp>(
449449 } ,
450450 }
451451 } else {
452- let in_chan = ( * ( * in_buffers) . buffernumchannels ) as usize ;
453452 let out_chan = ( * ( * out_buffers) . buffernumchannels ) as usize ;
454- let in_ptr = * ( * in_buffers) . buffers ;
455- let in_data = if in_ptr. is_null ( ) {
456- & [ ]
453+ let ( in_chan, in_data) = if !in_buffers. is_null ( ) {
454+ let in_chan = ( * ( * in_buffers) . buffernumchannels ) as usize ;
455+ let in_data = & * slice_from_raw_parts_mut ( * ( * in_buffers) . buffers , length as usize * in_chan) ;
456+ ( in_chan, in_data)
457457 } else {
458- & * slice_from_raw_parts_mut ( in_ptr , length as usize * in_chan )
458+ ( 0 , & [ ] as & [ f32 ] )
459459 } ;
460460 let out_data = & mut * slice_from_raw_parts_mut ( * ( * out_buffers) . buffers , length as usize * out_chan) ;
461461 data. read (
0 commit comments