From: Chris Down Date: Wed, 19 Nov 2025 08:49:22 +0000 (+0800) Subject: tests: Avoid variable shadowing in ASSERT_SIGNAL X-Git-Tag: v259-rc2~76^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=408e8d361fc179dd43f3ba91b9691abc52903134;p=thirdparty%2Fsystemd.git tests: Avoid variable shadowing in ASSERT_SIGNAL The ASSERT_SIGNAL macro uses a fixed variable name, `_r`. This prevents nesting the macro (like ASSERT_SIGNAL(ASSERT_SIGNAL(...))), as the inner instance would shadow the outer instance's variable. Switch to using the UNIQ_T helper to generate unique variable names at each expansion level. This allows the macro to be used recursively, which is required for upcoming regression tests regarding signal handling logic. --- diff --git a/src/shared/tests.h b/src/shared/tests.h index 4d546c6ab9d..1605778fb6c 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -597,18 +597,19 @@ int assert_signal_internal(void); #ifdef __COVERITY__ # define ASSERT_SIGNAL(expr, signal) __coverity_check__(((expr), false)) #else -# define ASSERT_SIGNAL(expr, signal) \ +# define ASSERT_SIGNAL(expr, signal) __ASSERT_SIGNAL(UNIQ, expr, signal) +# define __ASSERT_SIGNAL(uniq, expr, signal) \ ({ \ ASSERT_TRUE(SIGNAL_VALID(signal)); \ - int _r = assert_signal_internal(); \ - ASSERT_OK_ERRNO(_r); \ - if (_r == 0) { \ + int UNIQ_T(_r, uniq) = assert_signal_internal(); \ + ASSERT_OK_ERRNO(UNIQ_T(_r, uniq)); \ + if (UNIQ_T(_r, uniq) == 0) { \ expr; \ _exit(EXIT_SUCCESS); \ } \ - if (_r != signal) \ + if (UNIQ_T(_r, uniq) != signal) \ log_test_failed("\"%s\" died with signal %s, but %s was expected", \ - #expr, signal_to_string(_r), signal_to_string(signal)); \ + #expr, signal_to_string(UNIQ_T(_r, uniq)), signal_to_string(signal)); \ }) #endif