lib: Capture errno on entry

When printing the errno, it is important that we capture the user errno
before we make any library calls - as they may alter the value.

References: https://bugs.freedesktop.org/show_bug.cgi?id=74007
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2014-01-31 16:56:01 +00:00
parent be22e10885
commit 48ad03ca0c

View File

@ -1038,6 +1038,7 @@ void __igt_skip_check(const char *file, const int line,
const char *f, ...)
{
va_list args;
int err = errno;
if (f) {
static char *buf;
@ -1053,12 +1054,12 @@ void __igt_skip_check(const char *file, const int line,
igt_skip("Test requirement not met in function %s, file %s:%i:\n"
"Last errno: %i, %s\n"
"Test requirement: (%s)\n%s",
func, file, line, errno, strerror(errno), check, buf);
func, file, line, err, strerror(err), check, buf);
} else {
igt_skip("Test requirement not met in function %s, file %s:%i:\n"
"Last errno: %i, %s\n"
"Test requirement: (%s)\n",
func, file, line, errno, strerror(errno), check);
func, file, line, err, strerror(err), check);
}
}
@ -1110,11 +1111,12 @@ void __igt_fail_assert(int exitcode, const char *file,
const char *f, ...)
{
va_list args;
int err = errno;
printf("Test assertion failure function %s, file %s:%i:\n"
"Last errno: %i, %s\n"
"Failed assertion: %s\n",
func, file, line, errno, strerror(errno), assertion);
func, file, line, err, strerror(err), assertion);
if (f) {
va_start(args, f);