MT#55283 upgrade STR() and STR_DUP() macros

Avoids duplicate expansion of macro arguments.

Change-Id: I3485313f043fd0284337f94bea31955ccf151fca
pull/1870/head
Richard Fuchs 1 year ago
parent dd91961aeb
commit b8657c98f2

@ -37,13 +37,13 @@ TYPED_GQUEUE(str, str)
#define STR_NULL ((str) { NULL, 0 })
#define STR_EMPTY ((str) { "", 0 })
#define STR_CONST(s) ((str) { s, sizeof(s)-1 })
#define STR(s) ((str) { (char *) (s), (s) ? strlen(s) : 0 })
#define STR(s) ({ const char *__s = (s); (str) { (char *) (__s), (__s) ? strlen(__s) : 0 }; })
#define STR_PTR(s) (&((str) { (char *) (s), (s) ? strlen(s) : 0 }))
#define STR_NC(s) ((str) { (char *) (s), strlen(s) })
#define STR_GS(s) ((str) { (s)->str, (s)->len })
#define STR_LEN(s, len) ((str) { (char *) (s), len })
#define STR_LEN_ASSERT(s, len) ({ assert(sizeof(s) >= len); (str) { (char *) (s), len }; })
#define STR_DUP(s) ({ size_t __l = strlen(s); (str) { __g_memdup(s, __l + 1), __l }; })
#define STR_DUP(s) ({ const char *__s = (s); size_t __l = strlen(__s); (str) { __g_memdup(__s, __l + 1), __l }; })
#define STR_CONST_BUF(buf) ((str) { (char *) &buf, sizeof(buf) })

Loading…
Cancel
Save