mirror of https://github.com/mgba-emu/mgba.git
Util: Fix utf8 decoding regression
This commit is contained in:
parent
0c39cae5a2
commit
b8a9baa474
|
@ -144,7 +144,7 @@ uint32_t utf8Char(const char** unicode, size_t* length) {
|
||||||
if (numBytes == 0) {
|
if (numBytes == 0) {
|
||||||
return 0xFFFD;
|
return 0xFFFD;
|
||||||
}
|
}
|
||||||
if (*length < numBytes) {
|
if (*length + 1 < numBytes) {
|
||||||
*length = 0;
|
*length = 0;
|
||||||
return 0xFFFD;
|
return 0xFFFD;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,9 +124,24 @@ M_TEST_DEFINE(roundtrip) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
M_TEST_DEFINE(roundtripUnpadded) {
|
||||||
|
uint32_t unichar;
|
||||||
|
char buf[8] = {0};
|
||||||
|
for (unichar = 0; unichar < 0x110000; ++unichar) {
|
||||||
|
memset(buf, 0, sizeof(buf));
|
||||||
|
size_t len = toUtf8(unichar, buf);
|
||||||
|
const char* ptr = buf;
|
||||||
|
assert_true(len);
|
||||||
|
assert_false(buf[len]);
|
||||||
|
assert_int_equal(utf8Char(&ptr, &len), unichar);
|
||||||
|
assert_int_equal(len, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
M_TEST_SUITE_DEFINE(StringUTF8,
|
M_TEST_SUITE_DEFINE(StringUTF8,
|
||||||
cmocka_unit_test(strlenASCII),
|
cmocka_unit_test(strlenASCII),
|
||||||
cmocka_unit_test(strlenMultibyte),
|
cmocka_unit_test(strlenMultibyte),
|
||||||
cmocka_unit_test(strlenDegenerate),
|
cmocka_unit_test(strlenDegenerate),
|
||||||
cmocka_unit_test(roundtrip),
|
cmocka_unit_test(roundtrip),
|
||||||
|
cmocka_unit_test(roundtripUnpadded),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue