X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=compat%2Fsnprintf.c;h=e1e0e7543d9414726122c121b7909bf73809a81a;hb=7c0be4da5cab4efd89ee6583f7009d648a75a725;hp=357e733074ea7c85f880fa577ad65dfb3787fec7;hpb=a1eb73d917e15cd97314e0a39cbe857329339a96;p=git.git diff --git a/compat/snprintf.c b/compat/snprintf.c index 357e73307..e1e0e7543 100644 --- a/compat/snprintf.c +++ b/compat/snprintf.c @@ -2,12 +2,19 @@ /* * The size parameter specifies the available space, i.e. includes - * the trailing NUL byte; but Windows's vsnprintf expects the - * number of characters to write without the trailing NUL. + * the trailing NUL byte; but Windows's vsnprintf uses the entire + * buffer and avoids the trailing NUL, should the buffer be exactly + * big enough for the result. Defining SNPRINTF_SIZE_CORR to 1 will + * therefore remove 1 byte from the reported buffer size, so we + * always have room for a trailing NUL byte. */ #ifndef SNPRINTF_SIZE_CORR +#if defined(WIN32) && (!defined(__GNUC__) || __GNUC__ < 4) +#define SNPRINTF_SIZE_CORR 1 +#else #define SNPRINTF_SIZE_CORR 0 #endif +#endif #undef vsnprintf int git_vsnprintf(char *str, size_t maxsize, const char *format, va_list ap)