diff --git a/src/lib.rs b/src/lib.rs index 5c5efc8..c50a84c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -70,7 +70,7 @@ pub struct Args { #[allow(dead_code)] pub struct ServiceResult<'a> { pub success: bool, - buf: &'static mut [i32], + buf: &'a mut [i32], pub rets: &'a [i32], } @@ -145,15 +145,10 @@ macro_rules! call_method { /// a macro for creating a ServiceResult struct, used with the `call!` macro #[macro_export] macro_rules! service_result { - ($nargs:expr, $nrets:expr) => { unsafe { - static mut BUF: [i32; $nargs + $nrets] = [0; $nargs + $nrets]; - let rets: &[i32] = &[]; - let results = $crate::ServiceResult { - success: false, - buf: &mut BUF, - rets, - }; - results + ($nargs:expr, $nrets:expr) => { $crate::ServiceResult { + success: false, + buf: &mut [0; $nargs + $nrets], + rets: &[], }}; } @@ -161,16 +156,13 @@ macro_rules! service_result { /// a macro for creating a ServiceResult struct, used with the `call_method!` macro #[macro_export] macro_rules! method_service_result { - ($nargs:expr, $nrets:expr) => { unsafe { - static mut BUF: [i32; $nargs + $nrets + 1] = [0; $nargs + $nrets + 1]; - let rets: &[i32] = &[]; - let results = $crate::ServiceResult { + ($nargs:expr, $nrets:expr) => { + $crate::ServiceResult { success: false, - buf: &mut BUF, - rets, - }; - results - }}; + buf: &mut [0; $nargs + $nrets + 1], + rets: &[], + } + }; } /// # ofw_call