diff --git a/libs/util/dstring.c b/libs/util/dstring.c index d42430ad1..18e6358b6 100644 --- a/libs/util/dstring.c +++ b/libs/util/dstring.c @@ -296,8 +296,9 @@ _dvsprintf (dstring_t *dstr, int offs, const char *fmt, va_list args) if (!dstr->truesize) dstring_clearstr (dstr); // Make it a string // Some vsnprintf implementations return -1 on truncation - while ((size = vsnprintf (dstr->str + offs, dstr->truesize - offs, fmt, args)) == -1) { - dstr->size = (dstr->truesize & 1023) + 1024; + while ((size = vsnprintf (dstr->str + offs, dstr->truesize - offs, fmt, + args)) == -1) { + dstr->size = (dstr->truesize & ~1023) + 1024; dstring_adjust (dstr); #ifdef VA_LIST_IS_ARRAY VA_COPY (args, tmp_args);