summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-09-19 19:56:03 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-09-19 19:56:03 +0200
commit64cfe4eefe9b91ad648df216ba385d9a1e67dd78 (patch)
tree8dafd62004f240c4e0e88cad746b5b1d61b0da6c
parente5cdd62624342180a16630b4f6b1d604f6e6e581 (diff)
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 <daniel.vetter@ffwll.ch>
-rw-r--r--lib/drmtest.c18
-rw-r--r--tests/gem_storedw_batches_loop.c2
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);