Fix from_cstring from taking ownership
This commit is contained in:
parent
814b816450
commit
7b93ab5d2e
@ -142,12 +142,13 @@ impl<'ctx> Module<'ctx> {
|
||||
triple,
|
||||
c"generic".as_ptr(),
|
||||
c"".as_ptr(),
|
||||
llvm_sys::target_machine::LLVMCodeGenOptLevel::LLVMCodeGenLevelDefault,
|
||||
llvm_sys::target_machine::LLVMCodeGenOptLevel::LLVMCodeGenLevelNone,
|
||||
llvm_sys::target_machine::LLVMRelocMode::LLVMRelocDefault,
|
||||
llvm_sys::target_machine::LLVMCodeModel::LLVMCodeModelDefault,
|
||||
);
|
||||
|
||||
let data_layout = LLVMCreateTargetDataLayout(target_machine);
|
||||
LLVMSetTarget(self.module_ref, triple);
|
||||
LLVMSetModuleDataLayout(self.module_ref, data_layout);
|
||||
|
||||
let mut err = ErrorMessageHolder::null();
|
||||
@ -178,7 +179,7 @@ impl<'ctx> Module<'ctx> {
|
||||
);
|
||||
err.into_result().unwrap();
|
||||
|
||||
Ok(from_cstring(LLVMPrintModuleToString(self.module_ref)).expect("UTF8-err"))
|
||||
from_cstring(LLVMPrintModuleToString(self.module_ref)).ok_or("UTF-8 error".to_owned())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
use std::{
|
||||
ffi::{CString, c_char},
|
||||
ffi::{CStr, CString, c_char},
|
||||
ptr::null_mut,
|
||||
};
|
||||
|
||||
@ -10,11 +10,11 @@ pub fn into_cstring<T: Into<String>>(value: T) -> CString {
|
||||
unsafe { CString::from_vec_with_nul_unchecked((string + "\0").into_bytes()) }
|
||||
}
|
||||
|
||||
pub fn from_cstring(value: *mut c_char) -> Option<String> {
|
||||
if value.is_null() {
|
||||
pub fn from_cstring(pointer: *mut c_char) -> Option<String> {
|
||||
if pointer.is_null() {
|
||||
None
|
||||
} else {
|
||||
unsafe { CString::from_raw(value).into_string().ok() }
|
||||
unsafe { CStr::from_ptr(pointer).to_str().ok().map(|s| s.to_owned()) }
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user