aboutsummaryrefslogtreecommitdiffstats
path: root/main/utils.c
diff options
context:
space:
mode:
authormurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2006-11-07 23:46:41 +0000
committermurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2006-11-07 23:46:41 +0000
commitc25499d6c75ea145820465178ef982d256432bc6 (patch)
treede5d3b24e69a5cd86813ecf37bdeb5c9f87059a9 /main/utils.c
parentb3c737f0114f072f2c01eab99cfd6265fd6a1264 (diff)
These mods are to solve the problem in bug 7506. It's a lot of rework to solve a fairly small problem... such is life.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@47303 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/utils.c')
-rw-r--r--main/utils.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/main/utils.c b/main/utils.c
index b1c154131..ff226fc11 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -877,15 +877,11 @@ ast_string_field __ast_string_field_alloc_space(struct ast_string_field_mgr *mgr
return result;
}
-void __ast_string_field_index_build(struct ast_string_field_mgr *mgr,
+void __ast_string_field_index_build_va(struct ast_string_field_mgr *mgr,
ast_string_field *fields, int num_fields,
- int index, const char *format, ...)
+ int index, const char *format, va_list ap1, va_list ap2)
{
size_t needed;
- va_list ap1, ap2;
-
- va_start(ap1, format);
- va_start(ap2, format); /* va_copy does not exist on FreeBSD */
needed = vsnprintf(mgr->pool->base + mgr->used, mgr->space, format, ap1) + 1;
@@ -906,7 +902,20 @@ void __ast_string_field_index_build(struct ast_string_field_mgr *mgr,
fields[index] = mgr->pool->base + mgr->used;
mgr->used += needed;
mgr->space -= needed;
+}
+
+void __ast_string_field_index_build(struct ast_string_field_mgr *mgr,
+ ast_string_field *fields, int num_fields,
+ int index, const char *format, ...)
+{
+ va_list ap1, ap2;
+ va_start(ap1, format);
+ va_start(ap2, format); /* va_copy does not exist on FreeBSD */
+
+ __ast_string_field_index_build_va(mgr, fields, num_fields, index, format, ap1, ap2);
+
+ va_end(ap1);
va_end(ap2);
}