diff --git a/lib/str.h b/lib/str.h index 51733d9e5..9a3de7dad 100644 --- a/lib/str.h +++ b/lib/str.h @@ -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) })