Commit D11348: 'Win32 support: wcsnrtombs and mbsnrtowcs don't handle null output buffers correctly' which has been hanging around for a long time

llvm-svn: 351971
This commit is contained in:
Marshall Clow 2019-01-23 18:27:22 +00:00
parent aa0e74c1fc
commit 8681a3bc85
1 changed files with 10 additions and 0 deletions

View File

@ -61,6 +61,11 @@ size_t mbsnrtowcs( wchar_t *__restrict dst, const char **__restrict src,
size_t result = 0;
bool have_result = false;
// If dst is null then max_dest_chars should be ignored according to the
// standard. Setting max_dest_chars to a large value has this effect.
if (!dst)
max_dest_chars = static_cast<size_t>(-1);
while ( source_remaining ) {
if ( dst && dest_converted >= max_dest_chars )
break;
@ -114,6 +119,11 @@ size_t wcsnrtombs( char *__restrict dst, const wchar_t **__restrict src,
bool have_result = false;
bool terminator_found = false;
// If dst is null then dst_size_bytes should be ignored according to the
// standard. Setting dest_remaining to a large value has this effect.
if (!dst)
dest_remaining = static_cast<size_t>(-1);
while ( source_converted != max_source_chars ) {
if ( ! dest_remaining )
break;