From b7759c8f0af2e821df1eb8269c2c73e25d6058a5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 3 Nov 2021 15:56:34 +0100 Subject: [PATCH] macro: make TAKE_PTR() side-effect free --- src/fundamental/macro-fundamental.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 36d759ea1d0..ed527adb775 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -257,8 +257,9 @@ * resets it to NULL. See: https://doc.rust-lang.org/std/option/enum.Option.html#method.take */ #define TAKE_PTR(ptr) \ ({ \ - typeof(ptr) _ptr_ = (ptr); \ - (ptr) = NULL; \ + typeof(ptr) *_pptr_ = &(ptr); \ + typeof(ptr) _ptr_ = *_pptr_; \ + *_pptr_ = NULL; \ _ptr_; \ }) -- 2.47.3