From 4f005bade376d15ee60e90ca45a831aff9725087 Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 26 Oct 2011 10:58:41 +0200 Subject: libX11 libXft mesa mkfontscale pixman xserver git update 26 okt 2011 --- mesalib/src/glsl/ralloc.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'mesalib/src/glsl/ralloc.c') diff --git a/mesalib/src/glsl/ralloc.c b/mesalib/src/glsl/ralloc.c index fb48a91c5..f5f3934ac 100644 --- a/mesalib/src/glsl/ralloc.c +++ b/mesalib/src/glsl/ralloc.c @@ -439,7 +439,28 @@ ralloc_asprintf_append(char **str, const char *fmt, ...) bool ralloc_vasprintf_append(char **str, const char *fmt, va_list args) { - size_t existing_length, new_length; + size_t existing_length; + assert(str != NULL); + existing_length = *str ? strlen(*str) : 0; + return ralloc_vasprintf_rewrite_tail(str, existing_length, fmt, args); +} + +bool +ralloc_asprintf_rewrite_tail(char **str, size_t start, const char *fmt, ...) +{ + bool success; + va_list args; + va_start(args, fmt); + success = ralloc_vasprintf_rewrite_tail(str, start, fmt, args); + va_end(args); + return success; +} + +bool +ralloc_vasprintf_rewrite_tail(char **str, size_t start, const char *fmt, + va_list args) +{ + size_t new_length; char *ptr; assert(str != NULL); @@ -450,14 +471,13 @@ ralloc_vasprintf_append(char **str, const char *fmt, va_list args) return true; } - existing_length = strlen(*str); new_length = printf_length(fmt, args); - ptr = resize(*str, existing_length + new_length + 1); + ptr = resize(*str, start + new_length + 1); if (unlikely(ptr == NULL)) return false; - vsnprintf(ptr + existing_length, new_length + 1, fmt, args); + vsnprintf(ptr + start, new_length + 1, fmt, args); *str = ptr; return true; } -- cgit v1.2.3