diff options
-rw-r--r-- | lib/drmtest.c | 18 | ||||
-rw-r--r-- | tests/gem_storedw_batches_loop.c | 2 |
2 files changed, 8 insertions, 12 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; - - /* - * 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. - */ + static char *buf; + + /* igt_skip never returns, so try to not leak too badly. */ + if (buf) + free(buf); + 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); |