(svn r8089) -[win32] MS-borkedness: All *nprintf functions are broken, but we didn't test to fix it ourselves when 'len = count'.

This commit is contained in:
Darkvater
2007-01-13 13:06:18 +00:00
parent d1449465c5
commit 1b6467b0e3

View File

@@ -160,11 +160,16 @@ int CDECL snprintf(char *str, size_t size, const char *format, ...)
} }
#ifdef _MSC_VER #ifdef _MSC_VER
/* *nprintf broken, not POSIX compliant, MSDN description
* - If len < count, then len characters are stored in buffer, a null-terminator is appended, and len is returned.
* - If len = count, then len characters are stored in buffer, no null-terminator is appended, and len is returned.
* - If len > count, then count characters are stored in buffer, no null-terminator is appended, and a negative value is returned
*/
int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap) int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap)
{ {
int ret; int ret;
ret = _vsnprintf(str, size, format, ap); ret = _vsnprintf(str, size, format, ap);
if (ret < 0) str[size - 1] = '\0'; if (ret < 0 || ret == 0) str[size - 1] = '\0';
return ret; return ret;
} }
#endif /* _MSC_VER */ #endif /* _MSC_VER */