mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 06:41:41 +00:00
msvcrt: Fix error handling in _mbslwr_s_l.
This commit is contained in:
parent
25bbc7e996
commit
c54e0d93d9
|
@ -2114,15 +2114,12 @@ unsigned char* CDECL _mbslwr(unsigned char* s)
|
|||
*/
|
||||
int CDECL _mbslwr_s_l(unsigned char* s, size_t len, _locale_t locale)
|
||||
{
|
||||
unsigned char *p = s;
|
||||
|
||||
if (!s && !len)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if (!s || !len)
|
||||
{
|
||||
*_errno() = EINVAL;
|
||||
if (!MSVCRT_CHECK_PMT(s && len))
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
if (get_mbcinfo()->ismbcodepage)
|
||||
{
|
||||
|
@ -2145,12 +2142,12 @@ int CDECL _mbslwr_s_l(unsigned char* s, size_t len, _locale_t locale)
|
|||
*s = _tolower_l(*s, locale);
|
||||
}
|
||||
|
||||
if (*s)
|
||||
if (!MSVCRT_CHECK_PMT(len))
|
||||
{
|
||||
*s = '\0';
|
||||
*_errno() = EINVAL;
|
||||
*p = 0;
|
||||
return EINVAL;
|
||||
}
|
||||
*s = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -2944,7 +2944,7 @@ static void test__mbslwr_s(void)
|
|||
|
||||
memcpy(buffer, "ABCDEFGH", sizeof("ABCDEFGH"));
|
||||
errno = EBADF;
|
||||
ret = p_mbslwr_s(buffer, 4);
|
||||
ret = p_mbslwr_s(buffer, sizeof("ABCDEFGH") - 1);
|
||||
ok(ret == EINVAL, "Expected _mbslwr_s to return EINVAL, got %d\n", ret);
|
||||
ok(errno == EINVAL, "Expected errno to be EINVAL, got %d\n", errno);
|
||||
|
||||
|
|
Loading…
Reference in a new issue