<locale>: Improve std::collate::do_transform()'s handling of wrongly encoded input
#5431
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #5210.
Changes:
SIZE_MAXon error, notINT_MAXlike their UCRT counterparts._Wcsxfrm(), the return value is now correctly set tostatic_cast<size_t>(-1)for one error case, bringing it in line with the other error case. Previously, it was set toINT_MAX, which is potentially a valid length for a sort key.collate::do_transform()to return an empty string in the error case instead of throwing a confusinglength_error("string too large").collate::do_transform()should do in case of error.length_error. Mayberuntime_error?regex_matchandregex_searchreally shouldn't throw just because the searched input string isn't valid UTF-8.