From 3fec887a5feb1bc9e31ac2186ace7eb4019a94a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Sat, 16 Sep 2023 17:04:19 +0200 Subject: [PATCH] spa: utils: spa_exchange(): try to evaluate argument only once --- spa/include/spa/utils/cleanup.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spa/include/spa/utils/cleanup.h b/spa/include/spa/utils/cleanup.h index aa3eb2eea..bdabee106 100644 --- a/spa/include/spa/utils/cleanup.h +++ b/spa/include/spa/utils/cleanup.h @@ -35,8 +35,9 @@ static inline void _spa_autoptr_cleanup_func_ ## name (__typeof__(type) **thing) #define spa_exchange(var, new_value) \ __extension__ ({ \ - __typeof__(var) _old_value = (var); \ - (var) = (new_value); \ + __typeof__(var) *_ptr = &(var); \ + __typeof__(var) _old_value = *_ptr; \ + *_ptr = (new_value); \ _old_value; \ })