diff options
author | Luigi Rizzo <rizzo@icir.org> | 2007-01-19 18:00:00 +0000 |
---|---|---|
committer | Luigi Rizzo <rizzo@icir.org> | 2007-01-19 18:00:00 +0000 |
commit | 9d509eaf76a950825a1cd473d8c752cfa6b0c5a7 (patch) | |
tree | 13d352ac91c7f8f5994a3411da39234e31cab668 /include/asterisk | |
parent | e7c5029d23072aade199bec852f3a01a1001ce2a (diff) |
As the comment in the diff says:
AST_INLINE_API() is a macro that takes a block of code as an argument.
Using preprocessor #directives in the argument is not supported by all
compilers, and it is a bit of an obfuscation anyways, so avoid it.
As a workaround, define a macro that produces either its argument
or nothing, and use that instead of #ifdef/#endif within the
argument to AST_INLINE_API().
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@51312 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk')
-rw-r--r-- | include/asterisk/strings.h | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/include/asterisk/strings.h b/include/asterisk/strings.h index d45a7cd22..91a3b078a 100644 --- a/include/asterisk/strings.h +++ b/include/asterisk/strings.h @@ -361,15 +361,27 @@ void ast_str_reset(struct ast_str *buf), } ) +/* + * AST_INLINE_API() is a macro that takes a block of code as an argument. + * Using preprocessor #directives in the argument is not supported by all + * compilers, and it is a bit of an obfuscation anyways, so avoid it. + * As a workaround, define a macro that produces either its argument + * or nothing, and use that instead of #ifdef/#endif within the + * argument to AST_INLINE_API(). + */ +#if defined(DEBUG_THREADLOCALS) +#define _DB1(x) x +#else +#define _DB1(x) +#endif + /*! * Make space in a new string (e.g. to read in data from a file) */ AST_INLINE_API( int ast_str_make_space(struct ast_str **buf, size_t new_len), { -#if defined(DEBUG_THREADLOCALS) - struct ast_str *old_buf = *buf; -#endif /* defined(DEBUG_THREADLOCALS) */ + _DB1(struct ast_str *old_buf = *buf;) if (new_len <= (*buf)->len) return 0; /* success */ @@ -380,9 +392,7 @@ int ast_str_make_space(struct ast_str **buf, size_t new_len), return -1; if ((*buf)->ts != DS_MALLOC) { pthread_setspecific((*buf)->ts->key, *buf); -#if defined(DEBUG_THREADLOCALS) - __ast_threadstorage_object_replace(old_buf, *buf, new_len + sizeof(struct ast_str)); -#endif /* defined(DEBUG_THREADLOCALS) */ + _DB1(__ast_threadstorage_object_replace(old_buf, *buf, new_len + sizeof(struct ast_str));) } (*buf)->len = new_len; |