diff options
| author | Rubens Brandao <git@rubens.io> | 2024-04-06 16:32:00 -0300 |
|---|---|---|
| committer | Kyle Martin <krm504@nyu.edu> | 2024-04-09 13:39:49 -0400 |
| commit | 193dea95daedde471e6f1fbcbeaf1932c6fbd50c (patch) | |
| tree | 99be67d81a899543ed5e4636eea3d589583e48a5 /rust/src/callingconvention.rs | |
| parent | a6b48153b64a227c3492d77a96e679b8c469034c (diff) | |
replace BStr with str
Diffstat (limited to 'rust/src/callingconvention.rs')
| -rw-r--r-- | rust/src/callingconvention.rs | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/rust/src/callingconvention.rs b/rust/src/callingconvention.rs index 56755b37..815f4d42 100644 --- a/rust/src/callingconvention.rs +++ b/rust/src/callingconvention.rs @@ -448,24 +448,21 @@ impl<A: Architecture> CallingConvention<A> { unsafe { BnString::from_raw(BNGetCallingConventionName(self.handle)) } } - pub fn variables_for_parameters<S: Clone + BnStrCompatible>( + pub fn variables_for_parameters( &self, - params: &[FunctionParameter<S>], + params: &[FunctionParameter], permitted_registers: Option<&[A::Register]>, ) -> Vec<Variable> { let mut bn_params: Vec<BNFunctionParameter> = vec![]; - let mut name_strings = vec![]; + let name_strings = params.iter().map(|parameter| ¶meter.name); - for parameter in params.iter() { - name_strings.push(parameter.name.clone().into_bytes_with_nul()); - } - for (parameter, raw_name) in params.iter().zip(name_strings.iter_mut()) { + for (parameter, raw_name) in params.iter().zip(name_strings) { let location = match ¶meter.location { Some(location) => location.raw(), None => unsafe { mem::zeroed() }, }; bn_params.push(BNFunctionParameter { - name: raw_name.as_ref().as_ptr() as *mut _, + name: BnString::new(raw_name).into_raw(), type_: parameter.t.contents.handle, typeConfidence: parameter.t.confidence, defaultLocation: parameter.location.is_none(), @@ -501,9 +498,6 @@ impl<A: Architecture> CallingConvention<A> { } }; - // Gotta keep this around so the pointers are valid during the call - drop(name_strings); - let vars_slice = unsafe { slice::from_raw_parts(vars, count) }; let mut result = vec![]; for var in vars_slice { |
