mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
* stdlib/bits/stdlib.h (mbstowcs): Divide __bos (__dst) by
sizeof (wchar_t) rather than multiplying __len by sizeof (wchar_t). Pass __bos (__dst) / sizeof (wchar_t) to the *_chk routine. * wcsmbs/bits/wchar2.h (mbsrtowcs, mbsnrtowcs): Likewise. * debug/mbsnrtowcs_chk.c (__mbsnrtowcs_chk): Don't multiply len by sizeof (wchar_t). * debug/mbsrtowcs_chk.c (__mbsrtowcs_chk): Likewise. * debug/mbstowcs_chk.c (__mbstowcs_chk): Likewise. Fix type of SRC argument. Pass &SRC rather than SRC to __mbsrtowcs. * debug/wcstombs_chk.c (__wcstombs_chk): Pass &SRC rather than SRC to __wcsrtombs. * debug/tst-chk1.c: Include assert.h. (do_test): Change enough array from VLA into a fixed size array. Assert that MB_CUR_MAX is <= sizeof (enough). Use FAIL () macro instead of print error details. Add several new tests. Kill some unused variable warnings.
This commit is contained in:
@ -89,8 +89,9 @@ __NTH (mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src,
|
||||
{
|
||||
if (__bos (__dst) != (size_t) -1
|
||||
&& (!__builtin_constant_p (__len)
|
||||
|| __len * sizeof (wchar_t) > __bos (__dst)))
|
||||
return __mbstowcs_chk (__dst, __src, __len, __bos (__dst));
|
||||
|| __len > __bos (__dst) / sizeof (wchar_t)))
|
||||
return __mbstowcs_chk (__dst, __src, __len,
|
||||
__bos (__dst) / sizeof (wchar_t));
|
||||
return __mbstowcs_alias (__dst, __src, __len);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user