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: https://origsvn.digium.com/svn/asterisk/branches/1.4@47303 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Steve Murphy
2006-11-07 23:46:41 +00:00
parent b3bf131dd8
commit 517978fd5f
23 changed files with 254 additions and 165 deletions

View File

@@ -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);
}