* another bug in increasing buffers.
authorWilfried Göesgens <willi@citadel.org>
Fri, 29 May 2009 18:11:40 +0000 (18:11 +0000)
committerWilfried Göesgens <willi@citadel.org>
Fri, 29 May 2009 18:11:40 +0000 (18:11 +0000)
libcitadel/lib/stringbuf.c

index 9eec319e2f18292b07579024eebbf775909387bc..94728a9bb160417d8386f5dce137d220e18c3886 100644 (file)
@@ -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 ;
        }
 }