mirror of
https://github.com/SerenityOS/serenity
synced 2024-07-09 08:40:44 +00:00
LibC: Implement mbrtowc closer to POSIX
This commit is contained in:
parent
e7f99edefa
commit
4ef3ed4ba3
|
@ -209,16 +209,11 @@ size_t mbrtowc(wchar_t* pwc, const char* s, size_t n, mbstate_t* state)
|
|||
state = &_anonymous_state;
|
||||
}
|
||||
|
||||
// If s is nullptr, check if the state contains a complete multibyte character
|
||||
// s being a null pointer is a shorthand for reading a single null byte.
|
||||
if (s == nullptr) {
|
||||
if (mbstate_expected_bytes(state) == mbstate->stored_bytes) {
|
||||
*state = {};
|
||||
return 0;
|
||||
} else {
|
||||
*state = {};
|
||||
errno = EILSEQ;
|
||||
return -1;
|
||||
}
|
||||
pwc = nullptr;
|
||||
s = "";
|
||||
n = 1;
|
||||
}
|
||||
|
||||
// Stop early if we can't read anything
|
||||
|
@ -284,6 +279,7 @@ size_t mbrtowc(wchar_t* pwc, const char* s, size_t n, mbstate_t* state)
|
|||
state->stored_bytes = 0;
|
||||
|
||||
if (codepoint == 0) {
|
||||
*state = {};
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user