Merge pull request #4227 from MarcZX100/codex/carry-mbstowcs-4027
fix(libc): count full string with null mbstowcs destination
This commit is contained in:
commit
c22e2344ba
|
|
@ -125,10 +125,11 @@ inline int SonyWcscpyS(std::uint16_t* dest, std::size_t size, const std::uint16_
|
|||
|
||||
inline std::size_t SonyMbstowcs(std::uint16_t* dest, const char* src, std::size_t size) {
|
||||
if (!src) return 0;
|
||||
if (!dest) return std::strlen(src);
|
||||
std::size_t converted = 0;
|
||||
while (converted < size) {
|
||||
const auto value = static_cast<unsigned char>(src[converted]);
|
||||
if (dest) dest[converted] = value;
|
||||
dest[converted] = value;
|
||||
if (value == 0) return converted;
|
||||
++converted;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -144,6 +144,8 @@ int main() {
|
|||
Require(sceAmprMbstowcs(wide, "ABC", 8) == 3);
|
||||
Require(wide[0] == 65 && wide[1] == 66 && wide[2] == 67 && wide[3] == 0);
|
||||
Require(sceAmprMbstowcs(nullptr, "ABC", 8) == 3);
|
||||
Require(sceAmprMbstowcs(nullptr, "ABC", 0) == 3 && sceAmprMbstowcs(nullptr, "ABC", 1) == 3);
|
||||
Require(mbstowcs_nid_postfix(nullptr, "ABC", 0) == 3 && mbstowcs_nid_postfix(nullptr, "ABC", 1) == 3);
|
||||
Require(sceAmprMbstowcs(wide, "ABC", 2) == 2);
|
||||
Require(mbstowcs_nid_postfix(wide, "ABC", 8) == 3);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue