mirror of
https://github.com/reactos/reactos.git
synced 2024-09-08 19:59:49 +00:00
fixing two hiden bug in reactos, null termante the string right at end, code tested in vs, but it seam no affact on wine test mscvrt printf test. What hell is the snprintf function call to ??
svn path=/trunk/; revision=22081
This commit is contained in:
parent
f07bc589f6
commit
6999a6bc5c
|
@ -253,6 +253,8 @@ int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args)
|
||||||
number of chars for from string */
|
number of chars for from string */
|
||||||
int qualifier; /* 'h', 'l', 'L', 'I' or 'w' for integer fields */
|
int qualifier; /* 'h', 'l', 'L', 'I' or 'w' for integer fields */
|
||||||
|
|
||||||
|
/* clear the string buffer with zero so we do not need NULL terment it at end */
|
||||||
|
|
||||||
str = buf;
|
str = buf;
|
||||||
end = buf + cnt - 1;
|
end = buf + cnt - 1;
|
||||||
if (end < buf - 1) {
|
if (end < buf - 1) {
|
||||||
|
@ -501,8 +503,20 @@ int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args)
|
||||||
if (str <= end)
|
if (str <= end)
|
||||||
*str = '\0';
|
*str = '\0';
|
||||||
else if (cnt > 0)
|
else if (cnt > 0)
|
||||||
|
{
|
||||||
/* don't write out a null byte if the buf size is zero */
|
/* don't write out a null byte if the buf size is zero */
|
||||||
*end = '\0';
|
//*end = '\0';
|
||||||
|
if (str-buf >=cnt )
|
||||||
|
{
|
||||||
|
*end = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
end++;
|
||||||
|
*end = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
return str-buf;
|
return str-buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -500,9 +500,21 @@ int _vsnwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, va_list args)
|
||||||
}
|
}
|
||||||
if (str <= end)
|
if (str <= end)
|
||||||
*str = L'\0';
|
*str = L'\0';
|
||||||
else if (cnt > 0)
|
else if (cnt > 0)
|
||||||
|
{
|
||||||
/* don't write out a null byte if the buf size is zero */
|
/* don't write out a null byte if the buf size is zero */
|
||||||
*end = L'\0';
|
//*end = '\0';
|
||||||
|
if (str-buf >=cnt )
|
||||||
|
{
|
||||||
|
*end = L'\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
end++;
|
||||||
|
*end = L'\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
return str-buf;
|
return str-buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue