Skip to content
Snippets Groups Projects
utils.c 24.8 KiB
Newer Older
  • Learn to ignore specific revisions
  • {
    	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;
    
    	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;