Newer
Older
Kevin P. Fleming
committed
{
size_t needed;
va_list ap1, ap2;
va_start(ap1, format);
va_copy(ap2, ap1);
needed = vsnprintf(mgr->pool->base + mgr->used, mgr->space, format, ap1) + 1;
Kevin P. Fleming
committed
va_end(ap1);
if (needed > mgr->space) {
size_t new_size = mgr->size * 2;
while (new_size < needed)
new_size *= 2;
if (add_string_pool(mgr, new_size))
return;
vsprintf(mgr->pool->base + mgr->used, format, ap2);
}
fields[index] = mgr->pool->base + mgr->used;
mgr->used += needed;
mgr->space -= needed;
Kevin P. Fleming
committed
va_end(ap2);
}