diff options
author | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-07 21:47:49 +0000 |
---|---|---|
committer | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-07 21:47:49 +0000 |
commit | 4d6996c27ad2cc1e0055b06b18522a44036c4f5c (patch) | |
tree | c85e2036ae8d28edebee2af6cc055a51e39ba1da /main/utils.c | |
parent | c347b4f11cda5733f217deac8c9f852fc46945f0 (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.c | 21 |
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); } |