Fix an unlikely degenerate case of evutil_vsnprintf

svn:r1067
This commit is contained in:
Nick Mathewson 2009-01-28 20:31:19 +00:00
parent e3e696c822
commit f13bede758

View File

@ -340,18 +340,18 @@ evutil_snprintf(char *buf, size_t buflen, const char *format, ...)
int int
evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap) evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap)
{ {
int r;
if (!buflen)
return 0;
#ifdef _MSC_VER #ifdef _MSC_VER
int r = _vsnprintf(buf, buflen, format, ap); r = _vsnprintf(buf, buflen, format, ap);
buf[buflen-1] = '\0'; if (r < 0)
if (r >= 0) r = _vscprintf(format, ap);
return r;
else
return _vscprintf(format, ap);
#else #else
int r = vsnprintf(buf, buflen, format, ap); r = vsnprintf(buf, buflen, format, ap);
#endif
buf[buflen-1] = '\0'; buf[buflen-1] = '\0';
return r; return r;
#endif
} }
#define USE_INTERNAL_NTOP #define USE_INTERNAL_NTOP