Signed-off-by: Benjamin Otte <in7y118@public.uni-hamburg.de>
if (buffer->alloc == 0)
alloc = 256;
else
- alloc = buffer->alloc * 2;
+ alloc = buffer->alloc;
+ while (alloc < size)
+ alloc *= 2;
buffer->buf = realloc(buffer->buf, alloc);
if (!buffer->buf)
return -ENOMEM;
result = snd_output_buffer_need(output, size);
if (result < 0)
return result;
- result = vsprintf(buffer->buf + buffer->size, format, args);
+ result = vsnprintf(buffer->buf + buffer->size, result, format, args);
assert(result == (int)size);
+ buffer->size += result;
return result;
}