aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorrizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b>2007-01-19 18:00:00 +0000
committerrizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b>2007-01-19 18:00:00 +0000
commit8358f66e731bcbab6d670c8cbc338fbd4103bf52 (patch)
tree13d352ac91c7f8f5994a3411da39234e31cab668 /include
parent3c6e4ff61261dcb4871d7649b7ee22b160234368 (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: http://svn.digium.com/svn/asterisk/trunk@51312 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include')
-rw-r--r--include/asterisk/strings.h22
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;