From 4ccde167215e4b098120bceddcfaf41e3ca8e8b8 Mon Sep 17 00:00:00 2001 From: Brian Barto Date: Mon, 18 Apr 2016 14:51:16 -0400 Subject: [PATCH] No need to loop to increase buffer size when snprintf() tells me exactly how much space I need. modified: src/nms.c --- src/nms.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/nms.c b/src/nms.c index 456e867..b605c49 100644 --- a/src/nms.c +++ b/src/nms.c @@ -52,15 +52,14 @@ char getMaskChar(void); * const char *format - printf-style format string */ void nmsprintf(const char *format, ...) { - int bufferSize = PRINT_BUFFER; - int bufferIncrementSize = PRINT_BUFFER; - char *nmsprintBuffer = malloc(bufferSize); + char *nmsprintBuffer = malloc(PRINT_BUFFER); + int fmtSize; va_list argp; va_start(argp, format); - while (vsnprintf(nmsprintBuffer, bufferSize, format, argp) >= bufferSize) { - bufferSize += bufferIncrementSize; - nmsprintBuffer = realloc(nmsprintBuffer, bufferSize); + if ((fmtSize = vsnprintf(nmsprintBuffer, PRINT_BUFFER, format, argp)) >= PRINT_BUFFER) { + nmsprintBuffer = realloc(nmsprintBuffer, fmtSize + 1); + vsnprintf(nmsprintBuffer, fmtSize + 1, format, argp); } va_end(argp);