aboutsummaryrefslogtreecommitdiffstats
path: root/main/utils.c
diff options
context:
space:
mode:
authormurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2006-11-07 21:47:49 +0000
committermurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2006-11-07 21:47:49 +0000
commit4d6996c27ad2cc1e0055b06b18522a44036c4f5c (patch)
treec85e2036ae8d28edebee2af6cc055a51e39ba1da /main/utils.c
parentc347b4f11cda5733f217deac8c9f852fc46945f0 (diff)
A fair number of changes for the sake of bug 7506
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@47290 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 f930f74c6..aa621704a 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -892,15 +892,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;
@@ -921,7 +917,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);
}