fix NULL args in grapheme_break_stateful

This commit is contained in:
Steven G. Johnson 2020-12-15 15:26:56 -05:00
parent df2997a300
commit 8239639e3f
3 changed files with 21 additions and 7 deletions

View File

@ -1,5 +1,12 @@
# utf8proc release history #
## Version 2.6.1 ##
2020-12-15
- Bugfix in `utf8proc_grapheme_break_stateful` for `NULL` state argument, which
also broke `utf8proc_grapheme_break`.
## Version 2.6 ##
2020-11-23

View File

@ -118,6 +118,9 @@ int main(int argc, char **argv)
checkline("/ 1f926 1f3fc 200d 2642 fe0f /", true); /* facepalm + pale skin + zwj + male sign + FE0F */
checkline("/ 1f468 1f3fb 200d 1f91d 200d 1f468 1f3fd /", true); /* man face + pale skin + zwj + hand holding + zwj + man face + dark skin */
check(utf8proc_grapheme_break(0x03b1, 0x03b2), "failed 03b1 / 03b2 test");
check(!utf8proc_grapheme_break(0x03b1, 0x0302), "failed 03b1 0302 test");
printf("Passed regression tests!\n");
return 0;

View File

@ -290,13 +290,14 @@ static utf8proc_bool grapheme_break_simple(int lbc, int tbc) {
static utf8proc_bool grapheme_break_extended(int lbc, int tbc, utf8proc_int32_t *state)
{
if (state) {
int lbc_override;
if (*state == UTF8PROC_BOUNDCLASS_START)
*state = lbc_override = lbc;
else
lbc_override = *state;
utf8proc_bool break_permitted = grapheme_break_simple(lbc_override, tbc);
if (state) {
// Special support for GB 12/13 made possible by GB999. After two RI
// class codepoints we want to force a break. Do this by resetting the
// second RI's bound class to UTF8PROC_BOUNDCLASS_OTHER, to force a break
@ -315,9 +316,12 @@ static utf8proc_bool grapheme_break_extended(int lbc, int tbc, utf8proc_int32_t
}
else
*state = tbc;
}
return break_permitted;
}
else
return grapheme_break_simple(lbc, tbc);
}
UTF8PROC_DLLEXPORT utf8proc_bool utf8proc_grapheme_break_stateful(
utf8proc_int32_t c1, utf8proc_int32_t c2, utf8proc_int32_t *state) {