Crash on null pointer inside destroy functions.

This commit is contained in:
Emily Toop 2018-05-11 12:24:00 +01:00
parent c2dbf2c304
commit 0e0316991a
2 changed files with 3 additions and 5 deletions

View file

@ -913,9 +913,7 @@ pub unsafe extern "C" fn changelist_entry_at(tx_report: *mut TransactionChange,
/// destroy function for releasing the memory for `repr(C)` structs.
#[no_mangle]
pub unsafe extern "C" fn destroy(obj: *mut c_void) {
if !obj.is_null() {
let _ = Box::from_raw(obj);
}
let _ = Box::from_raw(obj);
}
/// Creates a function with a given `$name` that releases the memroy for a type `$t`.
@ -923,7 +921,7 @@ macro_rules! define_destructor (
($name:ident, $t:ty) => (
#[no_mangle]
pub unsafe extern "C" fn $name(obj: *mut $t) {
if !obj.is_null() { let _ = Box::from_raw(obj); }
let _ = Box::from_raw(obj);
}
)
);

View file

@ -28,7 +28,7 @@ pub mod strings {
CString::new(r_string.into()).unwrap().into_raw()
}
pub fn kw_from_string(keyword_string: &'static str) -> NamespacedKeyword {
pub fn kw_from_string(keyword_string: &'static str) -> Keyword {
// TODO: validate. The input might not be a keyword!
let attr_name = keyword_string.trim_left_matches(":");
let parts: Vec<&str> = attr_name.split("/").collect();