summaryrefslogtreecommitdiff
path: root/rust/src/demangle.rs
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-05-04 19:47:55 -0400
committerMason Reed <35282038+emesare@users.noreply.github.com>2025-05-12 17:45:24 -0400
commit788a8b7091bbdde77817030e0836d7a7a786fd99 (patch)
tree40e8f8d3c870788259a5acb5d14995cdc1656979 /rust/src/demangle.rs
parenta826c589dfc10c542deba7ca3343a462e02d6bde (diff)
[Rust] Simplify usage surrounding c strings
`cstring.as_ref().as_ptr() as *const c_char` -> `cstring.as_ptr()` `cstring.as_ref().as_ptr() as *mut _` -> `cstring.as_ptr()` `cstring.as_ptr() as *const c_char` -> `cstring.as_ptr()` With a few fixes for cstrings that might be dropped prematurely.
Diffstat (limited to 'rust/src/demangle.rs')
-rw-r--r--rust/src/demangle.rs23
1 files changed, 9 insertions, 14 deletions
diff --git a/rust/src/demangle.rs b/rust/src/demangle.rs
index 9cec0c93..a883dc82 100644
--- a/rust/src/demangle.rs
+++ b/rust/src/demangle.rs
@@ -32,14 +32,13 @@ pub fn demangle_generic<S: AsCStr>(
view: Option<&BinaryView>,
simplify: bool,
) -> Option<(QualifiedName, Option<Ref<Type>>)> {
- let mangled_name_bwn = mangled_name.to_cstr();
- let mangled_name_ptr = mangled_name_bwn.as_ref();
+ let mangled_name = mangled_name.to_cstr();
let mut out_type: *mut BNType = std::ptr::null_mut();
let mut out_name = BNQualifiedName::default();
let res = unsafe {
BNDemangleGeneric(
arch.handle,
- mangled_name_ptr.as_ptr() as *const c_char,
+ mangled_name.as_ptr(),
&mut out_type,
&mut out_name,
view.map(|v| v.handle).unwrap_or(std::ptr::null_mut()),
@@ -59,13 +58,12 @@ pub fn demangle_generic<S: AsCStr>(
}
pub fn demangle_llvm<S: AsCStr>(mangled_name: S, simplify: bool) -> Option<QualifiedName> {
- let mangled_name_bwn = mangled_name.to_cstr();
- let mangled_name_ptr = mangled_name_bwn.as_ref();
+ let mangled_name = mangled_name.to_cstr();
let mut out_name: *mut *mut std::os::raw::c_char = std::ptr::null_mut();
let mut out_size: usize = 0;
let res = unsafe {
BNDemangleLLVM(
- mangled_name_ptr.as_ptr() as *const c_char,
+ mangled_name.as_ptr(),
&mut out_name,
&mut out_size,
simplify,
@@ -92,15 +90,14 @@ pub fn demangle_gnu3<S: AsCStr>(
mangled_name: S,
simplify: bool,
) -> Option<(QualifiedName, Option<Ref<Type>>)> {
- let mangled_name_bwn = mangled_name.to_cstr();
- let mangled_name_ptr = mangled_name_bwn.as_ref();
+ let mangled_name = mangled_name.to_cstr();
let mut out_type: *mut BNType = std::ptr::null_mut();
let mut out_name: *mut *mut std::os::raw::c_char = std::ptr::null_mut();
let mut out_size: usize = 0;
let res = unsafe {
BNDemangleGNU3(
arch.handle,
- mangled_name_ptr.as_ptr() as *const c_char,
+ mangled_name.as_ptr(),
&mut out_type,
&mut out_name,
&mut out_size,
@@ -133,16 +130,14 @@ pub fn demangle_ms<S: AsCStr>(
mangled_name: S,
simplify: bool,
) -> Option<(QualifiedName, Option<Ref<Type>>)> {
- let mangled_name_bwn = mangled_name.to_cstr();
- let mangled_name_ptr = mangled_name_bwn.as_ref();
-
+ let mangled_name = mangled_name.to_cstr();
let mut out_type: *mut BNType = std::ptr::null_mut();
let mut out_name: *mut *mut std::os::raw::c_char = std::ptr::null_mut();
let mut out_size: usize = 0;
let res = unsafe {
BNDemangleMS(
arch.handle,
- mangled_name_ptr.as_ptr() as *const c_char,
+ mangled_name.as_ptr(),
&mut out_type,
&mut out_name,
&mut out_size,
@@ -309,7 +304,7 @@ impl Demangler {
}
let name = name.to_cstr();
- let name_ptr = name.as_ref().as_ptr() as *mut _;
+ let name_ptr = name.as_ptr();
let ctxt = Box::into_raw(Box::new(demangler));
let callbacks = BNDemanglerCallbacks {