diff options
Diffstat (limited to 'source/fitz/buffer.c')
-rw-r--r-- | source/fitz/buffer.c | 41 |
1 files changed, 10 insertions, 31 deletions
diff --git a/source/fitz/buffer.c b/source/fitz/buffer.c index ab814728..d432e810 100644 --- a/source/fitz/buffer.c +++ b/source/fitz/buffer.c @@ -331,45 +331,24 @@ fz_append_bits_pad(fz_context *ctx, fz_buffer *buf) buf->unused_bits = 0; } -size_t +static void fz_append_emit(fz_context *ctx, void *buffer, int c) +{ + fz_append_byte(ctx, buffer, c); +} + +void fz_append_printf(fz_context *ctx, fz_buffer *buffer, const char *fmt, ...) { - size_t ret; va_list args; va_start(args, fmt); - ret = fz_append_vprintf(ctx, buffer, fmt, args); + fz_format_string(ctx, buffer, fz_append_emit, fmt, args); va_end(args); - return ret; } -size_t -fz_append_vprintf(fz_context *ctx, fz_buffer *buffer, const char *fmt, va_list old_args) +void +fz_append_vprintf(fz_context *ctx, fz_buffer *buffer, const char *fmt, va_list args) { - size_t slack; - size_t len; - va_list args; - - slack = buffer->cap - buffer->len; - va_copy(args, old_args); - len = fz_vsnprintf((char *)buffer->data + buffer->len, slack, fmt, args); - va_copy_end(args); - - /* len is the number of characters in the formatted string (not including - * the terminating zero), so if (len > slack) the string was truncated. */ - if (len > slack) - { - /* Grow the buffer and retry */ - fz_ensure_buffer(ctx, buffer, buffer->len + len); - slack = buffer->cap - buffer->len; - - va_copy(args, old_args); - len = fz_vsnprintf((char *)buffer->data + buffer->len, slack, fmt, args); - va_copy_end(args); - } - - buffer->len += len; - - return len; + fz_format_string(ctx, buffer, fz_append_emit, fmt, args); } void |