diff options
author | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-07 23:46:41 +0000 |
---|---|---|
committer | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-07 23:46:41 +0000 |
commit | c25499d6c75ea145820465178ef982d256432bc6 (patch) | |
tree | de5d3b24e69a5cd86813ecf37bdeb5c9f87059a9 /main/utils.c | |
parent | b3c737f0114f072f2c01eab99cfd6265fd6a1264 (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.c | 21 |
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); } |