[systemd-commits] src/shared

Harald Hoyer harald at kemper.freedesktop.org
Thu Apr 18 03:07:52 PDT 2013


 src/shared/macro.h |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

New commits:
commit a858b64dddf79177e12ed30f5e8c47a1471c8bfe
Author: Harald Hoyer <harald at redhat.com>
Date:   Thu Apr 18 12:05:41 2013 +0200

    macro.h: let F_TYPE_CMP() macro fail to compile, if second parameter is not const
    
    If the magic parameter is not a const, then the macro does not work, so
    better fail to compile, than be surprised afterwards.

diff --git a/src/shared/macro.h b/src/shared/macro.h
index 08b40fd..2bb72f0 100644
--- a/src/shared/macro.h
+++ b/src/shared/macro.h
@@ -272,11 +272,12 @@ do {                                                                    \
  * signed int in the kernel and these negative numbers are extended to
  * long, which cannot be simply compared to the magic constants anymore.
  */
-#define F_TYPE_CMP(f, c)                                                \
+#define F_TYPE_CMP(f_type, magic)                                       \
         __extension__ ({                                                \
-                        __SWORD_TYPE _f = (f);                          \
-                        const __SWORD_TYPE _c = (c);                    \
-                        const int _c32 = (c);                           \
+                        __SWORD_TYPE _f = (f_type);                     \
+                        const __SWORD_TYPE _c = (magic);                \
+                        const int _c32 = 1 ? (magic)                    \
+                                    : sizeof((int[magic]){0});          \
                         (_f == _c || _f == _c32 );                      \
                 })
 



More information about the systemd-commits mailing list