bstr.h: change BSTR() from macro to inline function

Change BSTR() from a macro producing a compound literal to an inline
function returning the same value. This works for all existing uses,
and avoids a warning from BSTR(NULL) (the macro expansion contained
strlen(NULL); this was valid code because the strlen call was never
evaluated, but still triggered a GCC warning).
This commit is contained in:
Uoti Urpala 2011-04-24 03:05:24 +03:00
parent 9790fc444e
commit 28b3cc0efe
1 changed files with 6 additions and 2 deletions

8
bstr.h
View File

@ -70,10 +70,14 @@ static inline struct bstr bstrdup(void *talloc_ctx, struct bstr str)
struct bstr r = { talloc_strndup(talloc_ctx, str.start, str.len), str.len };
return r;
}
static inline struct bstr BSTR(const unsigned char *s)
{
return (struct bstr){(unsigned char *)s, s ? strlen(s) : 0};
}
#endif
// Create bstr compound literal from null-terminated string
#define BSTR(s) (struct bstr){(char *)(s), (s) ? strlen(s) : 0}
// create a pair (not single value!) for "%.*s" printf syntax
#define BSTR_P(bstr) (int)((bstr).len), (bstr).start