From 9d509eaf76a950825a1cd473d8c752cfa6b0c5a7 Mon Sep 17 00:00:00 2001 From: Luigi Rizzo Date: Fri, 19 Jan 2007 18:00:00 +0000 Subject: 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 --- include/asterisk/strings.h | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'include/asterisk/strings.h') 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; -- cgit v1.2.3