Fix Rust binding memory leak
This commit is contained in:
@@ -369,17 +369,13 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
let mut read_data = read_callback.map(|c| {
|
||||
Box::new(ffi::UcHook {
|
||||
callback: c,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
})
|
||||
});
|
||||
let mut write_data = write_callback.map(|c| {
|
||||
Box::new(ffi::UcHook {
|
||||
callback: c,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
})
|
||||
});
|
||||
|
||||
@@ -586,7 +582,8 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
return Err(uc_error::ARCH);
|
||||
}
|
||||
|
||||
let err: uc_error = unsafe { ffi::uc_reg_read(self.get_handle(), curr_reg_id, value.as_mut_ptr() as _) };
|
||||
let err: uc_error =
|
||||
unsafe { ffi::uc_reg_read(self.get_handle(), curr_reg_id, value.as_mut_ptr() as _) };
|
||||
|
||||
if err == uc_error::OK {
|
||||
boxed = value.into_boxed_slice();
|
||||
@@ -622,9 +619,7 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
let mut hook_ptr = core::ptr::null_mut();
|
||||
let mut user_data = Box::new(ffi::UcHook {
|
||||
callback,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
});
|
||||
|
||||
let err = unsafe {
|
||||
@@ -654,9 +649,7 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
let mut hook_ptr = core::ptr::null_mut();
|
||||
let mut user_data = Box::new(ffi::UcHook {
|
||||
callback,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
});
|
||||
|
||||
let err = unsafe {
|
||||
@@ -697,9 +690,7 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
let mut hook_ptr = core::ptr::null_mut();
|
||||
let mut user_data = Box::new(ffi::UcHook {
|
||||
callback,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
});
|
||||
|
||||
let err = unsafe {
|
||||
@@ -730,9 +721,7 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
let mut hook_ptr = core::ptr::null_mut();
|
||||
let mut user_data = Box::new(ffi::UcHook {
|
||||
callback,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
});
|
||||
|
||||
let err = unsafe {
|
||||
@@ -763,9 +752,7 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
let mut hook_ptr = core::ptr::null_mut();
|
||||
let mut user_data = Box::new(ffi::UcHook {
|
||||
callback,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
});
|
||||
|
||||
let err = unsafe {
|
||||
@@ -796,9 +783,7 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
let mut hook_ptr = core::ptr::null_mut();
|
||||
let mut user_data = Box::new(ffi::UcHook {
|
||||
callback,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
});
|
||||
|
||||
let err = unsafe {
|
||||
@@ -830,9 +815,7 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
let mut hook_ptr = core::ptr::null_mut();
|
||||
let mut user_data = Box::new(ffi::UcHook {
|
||||
callback,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
});
|
||||
|
||||
let err = unsafe {
|
||||
@@ -870,9 +853,7 @@ impl<'a, D> Unicorn<'a, D> {
|
||||
let mut hook_ptr = core::ptr::null_mut();
|
||||
let mut user_data = Box::new(ffi::UcHook {
|
||||
callback,
|
||||
uc: Unicorn {
|
||||
inner: self.inner.clone(),
|
||||
},
|
||||
uc: Rc::downgrade(&self.inner),
|
||||
});
|
||||
|
||||
let err = unsafe {
|
||||
|
||||
Reference in New Issue
Block a user