From 64cfe4eefe9b91ad648df216ba385d9a1e67dd78 Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Thu, 19 Sep 2013 19:56:03 +0200 Subject: [PATCH] lib/drmtest: Improve printf-like igt_skip_on/require Ben Widawsky suggested to use vasprintf, which perfectly fits the bill. Also fix the logic conversion bug in tests/gem_storedw_batches_loop that crept in again :( Signed-off-by: Daniel Vetter --- lib/drmtest.c | 16 ++++++---------- tests/gem_storedw_batches_loop.c | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/lib/drmtest.c b/lib/drmtest.c index 7c3c0af7..0bc1e869 100644 --- a/lib/drmtest.c +++ b/lib/drmtest.c @@ -882,18 +882,14 @@ void __igt_skip_check(const char *file, const int line, va_list args; if (f) { - char buf[4096]; - int length; + static char *buf; + + /* igt_skip never returns, so try to not leak too badly. */ + if (buf) + free(buf); - /* - * Important: va_list argument lists can't be used twice, so we - * can't first do an vsnprintf call to size the temporary - * storage correctly. Pick the easy solution with a static - * buffer and an asssert. - */ va_start(args, f); - length = vsnprintf(buf, sizeof(buf), f, args); - assert(length < sizeof(buf) - 1); + vasprintf(&buf, f, args); va_end(args); igt_skip("Test requirement not met in function %s, file %s:%i:\n" diff --git a/tests/gem_storedw_batches_loop.c b/tests/gem_storedw_batches_loop.c index ce5ee556..d6cd216f 100644 --- a/tests/gem_storedw_batches_loop.c +++ b/tests/gem_storedw_batches_loop.c @@ -103,7 +103,7 @@ store_dword_loop(int divider, unsigned flags) drm_intel_bo_map(target_bo, 1); buf = target_bo->virtual; - igt_assert_f(buf[0] != (0x42000000 | val), + igt_assert_f(buf[0] == (0x42000000 | val), "value mismatch: cur 0x%08x, stored 0x%08x\n", buf[0], 0x42000000 | val);