From 44efe2f3d75b971beb88cd27f24b80ae293bc7a3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Fri, 29 May 2009 18:11:40 +0000 Subject: [PATCH] * another bug in increasing buffers. --- libcitadel/lib/stringbuf.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libcitadel/lib/stringbuf.c b/libcitadel/lib/stringbuf.c index 9eec319e2..94728a9bb 100644 --- a/libcitadel/lib/stringbuf.c +++ b/libcitadel/lib/stringbuf.c @@ -906,6 +906,7 @@ void StrBufVAppendPrintf(StrBuf *Buf, const char *format, va_list ap) newused = Offset + nWritten; if (newused >= Buf->BufSize) { IncreaseBuf(Buf, 1, newused); + newused = Buf->BufSize + 1; } else { Buf->BufUsed = Offset + nWritten; @@ -938,6 +939,7 @@ void StrBufAppendPrintf(StrBuf *Buf, const char *format, ...) newused = Buf->BufUsed + nWritten; if (newused >= Buf->BufSize) { IncreaseBuf(Buf, 1, newused); + newused = Buf->BufSize + 1; } else { Buf->BufUsed += nWritten; @@ -962,9 +964,12 @@ void StrBufPrintf(StrBuf *Buf, const char *format, ...) va_start(arg_ptr, format); nWritten = vsnprintf(Buf->buf, Buf->BufSize, format, arg_ptr); va_end(arg_ptr); - Buf->BufUsed = nWritten ; - if (nWritten >= Buf->BufSize) + if (nWritten >= Buf->BufSize) { IncreaseBuf(Buf, 0, 0); + nWritten = Buf->BufSize + 1; + continue; + } + Buf->BufUsed = nWritten ; } } -- 2.39.2