From: Lennart Poettering Date: Wed, 3 Nov 2021 14:56:34 +0000 (+0100) Subject: macro: make TAKE_PTR() side-effect free X-Git-Tag: v250-rc1~364^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F21216%2Fhead;p=thirdparty%2Fsystemd.git macro: make TAKE_PTR() side-effect free --- 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_; \ })