use cpp::cpp;
pub fn get_last_error_message() -> String {
let error_boxed_ptr = cpp!(unsafe [] -> *mut std::ffi::c_void as "void*" {
const std::string lastError = GLOBAL_LOGGER.getLastError();
const char* lastErrorCstr = lastError.c_str();
void* lastErrorPtr = rust!(Logger_takeLastError [
lastErrorCstr : *const std::os::raw::c_char as "const char*"
] -> *mut std::ffi::c_void as "void*" {
let error_boxed = Box::new(
std::ffi::CStr::from_ptr(lastErrorCstr)
.to_str()
.unwrap_or_default()
.to_owned()
);
Box::into_raw(error_boxed) as *mut std::ffi::c_void
});
return lastErrorPtr;
});
let error_boxed = unsafe { Box::from_raw(error_boxed_ptr as *mut String) };
let error = *error_boxed;
if !error.is_empty() {
error
} else {
"unknown error".to_string()
}
}