X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=buffer.c;h=81855fd9c0a53c2ce1387bf246415d5258313c95;hb=9444dcb2ea8e2b24883d3f5740e28ca20d467ad2;hp=847f202002a680fa2fabcae3f1ccd9000222ee48;hpb=8a872b1a9ec12dd44292603137c41f1b29b9f756;p=apps%2Fpfixtools.git diff --git a/buffer.c b/buffer.c index 847f202..81855fd 100644 --- a/buffer.c +++ b/buffer.c @@ -49,21 +49,18 @@ void buffer_resize(buffer_t *buf, ssize_t newsize) ssize_t buffer_addvf(buffer_t *buf, const char *fmt, va_list ap) { - ssize_t pos; - int len, available; + ssize_t len, avail = buf->size - buf->len; va_list ap2; va_copy(ap2, ap); - pos = buf->len; - available = buf->size - pos; - - len = vsnprintf(buf->data + pos, available, fmt, ap); - if (len >= available) { + len = vsnprintf(buf->data + buf->len, avail, fmt, ap); + if (len >= avail) { buffer_resize(buf, buf->len + len); - len = vsnprintf(buf->data + pos, available, fmt, ap2); + avail = buf->size - buf->len; + len = vsnprintf(buf->data + buf->len, avail, fmt, ap2); } - buf->len = pos + len; + buf->len += len; buf->data[buf->len] = '\0'; va_end(ap2); return len;