From b4dc0ed8b127a16ca5215a08fd2890768cde646e Mon Sep 17 00:00:00 2001 From: David Gibson Date: Fri, 9 Dec 2016 14:45:25 +1100 Subject: [PATCH] tests: Fix double expansion bugs in test code Two test programs - check_path and overlay - define a CHECK() helper macro in such a way that in the case of an error it will re-execute the checked code fragment, instead of using the return value from the initial call. This can lead to misreporting errors, because the code may fail in a different way the second time around due to changes made during the first failing call. Signed-off-by: David Gibson --- tests/check_path.c | 5 +++-- tests/overlay.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/check_path.c b/tests/check_path.c index 0d6a73b..f12f950 100644 --- a/tests/check_path.c +++ b/tests/check_path.c @@ -26,8 +26,9 @@ #define CHECK(code) \ { \ - if (code) \ - FAIL(#code ": %s", fdt_strerror(code)); \ + int err = (code); \ + if (err) \ + FAIL(#code ": %s", fdt_strerror(err)); \ } /* 4k ought to be enough for anybody */ diff --git a/tests/overlay.c b/tests/overlay.c index 961ed60..3093eec 100644 --- a/tests/overlay.c +++ b/tests/overlay.c @@ -27,8 +27,9 @@ #define CHECK(code) \ { \ - if (code) \ - FAIL(#code ": %s", fdt_strerror(code)); \ + int err = (code); \ + if (err) \ + FAIL(#code ": %s", fdt_strerror(err)); \ } /* 4k ought to be enough for anybody */