From: Bruno Haible Date: Tue, 28 Dec 2021 23:04:33 +0000 (+0100) Subject: unigbrk: Simplify code for regional indicators. X-Git-Tag: v1.0~2465 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=330c09389e2e6fe09ba2303082676854f8e6269a;p=gnulib.git unigbrk: Simplify code for regional indicators. * lib/unigbrk/u-grapheme-breaks.h (FUNC): Make code for regional indicators more future-proof. * tests/unigbrk/test-u8-grapheme-breaks.c (main): Add test of regional indicators. * tests/unigbrk/test-u16-grapheme-breaks.c (main): Likewise. * tests/unigbrk/test-u32-grapheme-breaks.c (main): Likewise. --- diff --git a/ChangeLog b/ChangeLog index ac8d1baeae..fd2db814aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2021-12-28 Bruno Haible + + unigbrk: Simplify code for regional indicators. + * lib/unigbrk/u-grapheme-breaks.h (FUNC): Make code for regional + indicators more future-proof. + * tests/unigbrk/test-u8-grapheme-breaks.c (main): Add test of regional + indicators. + * tests/unigbrk/test-u16-grapheme-breaks.c (main): Likewise. + * tests/unigbrk/test-u32-grapheme-breaks.c (main): Likewise. + 2021-12-28 Paul Eggert clock_getres: document portability issues better diff --git a/lib/unigbrk/u-grapheme-breaks.h b/lib/unigbrk/u-grapheme-breaks.h index 2b4ae0e60d..915d3d0e75 100644 --- a/lib/unigbrk/u-grapheme-breaks.h +++ b/lib/unigbrk/u-grapheme-breaks.h @@ -105,12 +105,8 @@ FUNC (const UNIT *s, size_t n, char *p) /* *p = 0 */; /* No break between RI if there is an odd number of RI characters before (GB12, GB13). */ - else if (prop == GBP_RI) - { - if (ri_count % 2 == 0) - *p = 1; - /* else *p = 0; */ - } + else if (prop == GBP_RI && (ri_count % 2) != 0) + /* *p = 0 */; /* Break everywhere (GB999). */ else *p = 1; diff --git a/tests/unigbrk/test-u16-grapheme-breaks.c b/tests/unigbrk/test-u16-grapheme-breaks.c index 6dc52acb72..bb25ff837f 100644 --- a/tests/unigbrk/test-u16-grapheme-breaks.c +++ b/tests/unigbrk/test-u16-grapheme-breaks.c @@ -99,5 +99,10 @@ main (void) test_u16_grapheme_breaks ("#_#", 'e', ACUTE, 'x', -1); test_u16_grapheme_breaks ("#_#_", 'e', ACUTE, 'e', GRAVE, -1); + /* Regional indicators. */ + test_u16_grapheme_breaks ("##___#___#", + '.', 0xD83C, 0xDDE9, 0xD83C, 0xDDEA, 0xD83C, 0xDDEB, 0xD83C, 0xDDF7, '.', + -1); + return 0; } diff --git a/tests/unigbrk/test-u32-grapheme-breaks.c b/tests/unigbrk/test-u32-grapheme-breaks.c index d85e53fe3f..a967d4f5e8 100644 --- a/tests/unigbrk/test-u32-grapheme-breaks.c +++ b/tests/unigbrk/test-u32-grapheme-breaks.c @@ -99,5 +99,10 @@ main (void) test_u32_grapheme_breaks ("#_#", 'e', ACUTE, 'x', -1); test_u32_grapheme_breaks ("#_#_", 'e', ACUTE, 'e', GRAVE, -1); + /* Regional indicators. */ + test_u32_grapheme_breaks ("##_#_#", + '.', 0x1F1E9, 0x1F1EA, 0x1F1EB, 0x1F1F7, '.', + -1); + return 0; } diff --git a/tests/unigbrk/test-u8-grapheme-breaks.c b/tests/unigbrk/test-u8-grapheme-breaks.c index a6be9ce1ca..ac505b0d34 100644 --- a/tests/unigbrk/test-u8-grapheme-breaks.c +++ b/tests/unigbrk/test-u8-grapheme-breaks.c @@ -91,5 +91,9 @@ main (void) test_u8_grapheme_breaks ("e"ACUTE"x", "#__#"); test_u8_grapheme_breaks ("e"ACUTE "e"ACUTE, "#__#__"); + /* Regional indicators. */ + test_u8_grapheme_breaks (".\360\237\207\251\360\237\207\252\360\237\207\253\360\237\207\267.", + "##_______#_______#"); + return 0; }