Skip to content
Snippets Groups Projects
Commit 60f00508 authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Restore errno if trace_expr is successful

parent 10a7944a
No related branches found
No related tags found
No related merge requests found
......@@ -67,11 +67,25 @@ pub fn trace_error() -> (isize, &'static str) {
macro_rules! trace_expr {
($expr:expr, $($arg:tt)*) => ({
trace!("{}", format_args!($($arg)*));
unsafe {
::platform::errno = 0;
}
let old_errno = unsafe { ::platform::errno };
unsafe { ::platform::errno = 0; }
let ret = $expr;
trace!("{} = {} {:?}", format_args!($($arg)*), ret, $crate::macros::trace_error());
let errno = unsafe { ::platform::errno } as isize;
if errno == 0 {
unsafe { ::platform::errno = old_errno; }
}
let strerror = if errno >= 0 && errno < ::header::errno::STR_ERROR.len() as isize {
::header::errno::STR_ERROR[errno as usize]
} else {
"Unknown error"
};
trace!("{} = {} ({}, {})", format_args!($($arg)*), ret, errno, strerror);
ret
});
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment