]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
macro: make TAKE_PTR() side-effect free 21216/head
authorLennart Poettering <lennart@poettering.net>
Wed, 3 Nov 2021 14:56:34 +0000 (15:56 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 3 Nov 2021 15:36:19 +0000 (16:36 +0100)
src/fundamental/macro-fundamental.h

index 36d759ea1d0d63541c01f1d1dd0dc30a35346196..ed527adb775716aff812bedf2b762b043407fc40 100644 (file)
  * 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_;                          \
         })