]> Savannah Git Hosting - gnulib.git/commitdiff
unilbrk: Some more tweaks.
authorBruno Haible <bruno@clisp.org>
Sun, 15 Sep 2024 23:05:00 +0000 (01:05 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 15 Sep 2024 23:05:00 +0000 (01:05 +0200)
* lib/unilbrk/u8-possible-linebreaks.c (u8_possible_linebreaks_loop):
Assign to preceding_prop at each loop round. Assign to prev2_ea,
prev_ea, prev_nus also when a line break was seen.
* lib/unilbrk/u16-possible-linebreaks.c (u16_possible_linebreaks_loop):
Likewise.
* lib/unilbrk/u32-possible-linebreaks.c (u32_possible_linebreaks_loop):
Likewise.

ChangeLog
lib/unilbrk/u16-possible-linebreaks.c
lib/unilbrk/u32-possible-linebreaks.c
lib/unilbrk/u8-possible-linebreaks.c

index 54ad8d3eec97e99ea93d0d17225fcc40ade4c49e..eb6687af52547e7b5e7f3b64a5d8f367e23c66d2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2024-09-15  Bruno Haible  <bruno@clisp.org>
+
+       unilbrk: Some more tweaks.
+       * lib/unilbrk/u8-possible-linebreaks.c (u8_possible_linebreaks_loop):
+       Assign to preceding_prop at each loop round. Assign to prev2_ea,
+       prev_ea, prev_nus also when a line break was seen.
+       * lib/unilbrk/u16-possible-linebreaks.c (u16_possible_linebreaks_loop):
+       Likewise.
+       * lib/unilbrk/u32-possible-linebreaks.c (u32_possible_linebreaks_loop):
+       Likewise.
+
 2024-09-15  Bruno Haible  <bruno@clisp.org>
 
        unilbrk: Strengthen tests.
index 96780416062af6f3ad0c6d8892a6a7c55c411274..ac655f8c82fb775690ee992c4aa594352a667baf 100644 (file)
@@ -122,7 +122,7 @@ u16_possible_linebreaks_loop (const uint16_t *s, size_t n, const char *encoding,
               lookahead2_prop_ea = PROP_EA (LBP_BK, 0);
             }
 
-          bool nus = /* ending at the last character, there was a character
+          bool nus = /* ending at the previous character, there was a character
                         with line break property LBP_NU and since then only
                         characters with line break property LBP_SY or LBP_IS */
             (prev_prop == LBP_NU
@@ -136,10 +136,8 @@ u16_possible_linebreaks_loop (const uint16_t *s, size_t n, const char *encoding,
                  a CR-LF sequence.  */
               if (prev_prop == cr && prop == LBP_LF)
                 p[-1] = UC_BREAK_CR_BEFORE_LF;
-              prev_prop = prop;
               last_prop = LBP_BK;
               seen_space = NULL;
-              prev_initial_hyphen = false;
             }
           else
             {
@@ -385,33 +383,33 @@ u16_possible_linebreaks_loop (const uint16_t *s, size_t n, const char *encoding,
                   last_prop = prop;
                   seen_space = NULL;
                 }
+            }
 
-              /* (LB9) Treat X (CM | ZWJ)* as if it were X, where X is any line
-                 break class except BK, CR, LF, NL, SP, or ZW.  */
-              if (!((prop == LBP_CM || prop == LBP_ZWJ)
-                    && !(prev_prop == LBP_BK || prev_prop == LBP_LF || prev_prop == LBP_CR
-                         || prev_prop == LBP_SP || prev_prop == LBP_ZW)))
-                {
-                  prev_initial_hyphen =
-                    (prop == LBP_HY || uc == 0x2010)
-                    && (prev_prop == LBP_BK || prev_prop == LBP_CR || prev_prop == LBP_LF
-                        || prev_prop == LBP_SP || prev_prop == LBP_ZW
-                        || prev_prop == LBP_CB || prev_prop == LBP_GL);
-                  prev_prop = (prop == LBP_VI && (prev_prop == LBP_AK
-                                                  || prev_prop == LBP_AL2
-                                                  || prev_prop == LBP_AS)
-                               ? LBP_AKLS_VI :
-                               prev_prop == LBP_HL && (prop == LBP_HY
-                                                       || (prop == LBP_BA && !ea))
-                               ? LBP_HL_BA :
-                               prop);
-                  prev2_ea = prev_ea;
-                  prev_ea = ea;
-                }
-              preceding_prop = prop;
+          /* (LB9) Treat X (CM | ZWJ)* as if it were X, where X is any line
+             break class except BK, CR, LF, NL, SP, or ZW.  */
+          if (!((prop == LBP_CM || prop == LBP_ZWJ)
+                && !(prev_prop == LBP_BK || prev_prop == LBP_LF || prev_prop == LBP_CR
+                     || prev_prop == LBP_SP || prev_prop == LBP_ZW)))
+            {
+              prev_initial_hyphen =
+                (prop == LBP_HY || uc == 0x2010)
+                && (prev_prop == LBP_BK || prev_prop == LBP_CR || prev_prop == LBP_LF
+                    || prev_prop == LBP_SP || prev_prop == LBP_ZW
+                    || prev_prop == LBP_CB || prev_prop == LBP_GL);
+              prev_prop = (prop == LBP_VI && (prev_prop == LBP_AK
+                                              || prev_prop == LBP_AL2
+                                              || prev_prop == LBP_AS)
+                           ? LBP_AKLS_VI :
+                           prev_prop == LBP_HL && (prop == LBP_HY
+                                                   || (prop == LBP_BA && !ea))
+                           ? LBP_HL_BA :
+                           prop);
+              prev2_ea = prev_ea;
+              prev_ea = ea;
+              prev_nus = nus;
             }
 
-          prev_nus = nus;
+          preceding_prop = prop;
 
           if (prop == LBP_RI)
             ri_count++;
index c12ca3abbbd47ab75c6224aa764e09643ecc524f..f242c9a8ee25c4e50064af32f96a64bcdd09e82d 100644 (file)
@@ -115,7 +115,7 @@ u32_possible_linebreaks_loop (const uint32_t *s, size_t n, const char *encoding,
               lookahead2_prop_ea = PROP_EA (LBP_BK, 0);
             }
 
-          bool nus = /* ending at the last character, there was a character
+          bool nus = /* ending at the previous character, there was a character
                         with line break property LBP_NU and since then only
                         characters with line break property LBP_SY or LBP_IS */
             (prev_prop == LBP_NU
@@ -129,10 +129,8 @@ u32_possible_linebreaks_loop (const uint32_t *s, size_t n, const char *encoding,
                  a CR-LF sequence.  */
               if (prev_prop == cr && prop == LBP_LF)
                 p[-1] = UC_BREAK_CR_BEFORE_LF;
-              prev_prop = prop;
               last_prop = LBP_BK;
               seen_space = NULL;
-              prev_initial_hyphen = false;
             }
           else
             {
@@ -378,33 +376,33 @@ u32_possible_linebreaks_loop (const uint32_t *s, size_t n, const char *encoding,
                   last_prop = prop;
                   seen_space = NULL;
                 }
+            }
 
-              /* (LB9) Treat X (CM | ZWJ)* as if it were X, where X is any line
-                 break class except BK, CR, LF, NL, SP, or ZW.  */
-              if (!((prop == LBP_CM || prop == LBP_ZWJ)
-                    && !(prev_prop == LBP_BK || prev_prop == LBP_LF || prev_prop == LBP_CR
-                         || prev_prop == LBP_SP || prev_prop == LBP_ZW)))
-                {
-                  prev_initial_hyphen =
-                    (prop == LBP_HY || uc == 0x2010)
-                    && (prev_prop == LBP_BK || prev_prop == LBP_CR || prev_prop == LBP_LF
-                        || prev_prop == LBP_SP || prev_prop == LBP_ZW
-                        || prev_prop == LBP_CB || prev_prop == LBP_GL);
-                  prev_prop = (prop == LBP_VI && (prev_prop == LBP_AK
-                                                  || prev_prop == LBP_AL2
-                                                  || prev_prop == LBP_AS)
-                               ? LBP_AKLS_VI :
-                               prev_prop == LBP_HL && (prop == LBP_HY
-                                                       || (prop == LBP_BA && !ea))
-                               ? LBP_HL_BA :
-                               prop);
-                  prev2_ea = prev_ea;
-                  prev_ea = ea;
-                }
-              preceding_prop = prop;
+          /* (LB9) Treat X (CM | ZWJ)* as if it were X, where X is any line
+             break class except BK, CR, LF, NL, SP, or ZW.  */
+          if (!((prop == LBP_CM || prop == LBP_ZWJ)
+                && !(prev_prop == LBP_BK || prev_prop == LBP_LF || prev_prop == LBP_CR
+                     || prev_prop == LBP_SP || prev_prop == LBP_ZW)))
+            {
+              prev_initial_hyphen =
+                (prop == LBP_HY || uc == 0x2010)
+                && (prev_prop == LBP_BK || prev_prop == LBP_CR || prev_prop == LBP_LF
+                    || prev_prop == LBP_SP || prev_prop == LBP_ZW
+                    || prev_prop == LBP_CB || prev_prop == LBP_GL);
+              prev_prop = (prop == LBP_VI && (prev_prop == LBP_AK
+                                              || prev_prop == LBP_AL2
+                                              || prev_prop == LBP_AS)
+                           ? LBP_AKLS_VI :
+                           prev_prop == LBP_HL && (prop == LBP_HY
+                                                   || (prop == LBP_BA && !ea))
+                           ? LBP_HL_BA :
+                           prop);
+              prev2_ea = prev_ea;
+              prev_ea = ea;
+              prev_nus = nus;
             }
 
-          prev_nus = nus;
+          preceding_prop = prop;
 
           if (prop == LBP_RI)
             ri_count++;
index 3f32ee628918f5f79d9858502106bc9ebff53b50..90d64c51b8d5ff1ba98f5ae083764aca5494b44b 100644 (file)
@@ -122,7 +122,7 @@ u8_possible_linebreaks_loop (const uint8_t *s, size_t n, const char *encoding,
               lookahead2_prop_ea = PROP_EA (LBP_BK, 0);
             }
 
-          bool nus = /* ending at the last character, there was a character
+          bool nus = /* ending at the previous character, there was a character
                         with line break property LBP_NU and since then only
                         characters with line break property LBP_SY or LBP_IS */
             (prev_prop == LBP_NU
@@ -136,10 +136,8 @@ u8_possible_linebreaks_loop (const uint8_t *s, size_t n, const char *encoding,
                  a CR-LF sequence.  */
               if (prev_prop == cr && prop == LBP_LF)
                 p[-1] = UC_BREAK_CR_BEFORE_LF;
-              prev_prop = prop;
               last_prop = LBP_BK;
               seen_space = NULL;
-              prev_initial_hyphen = false;
             }
           else
             {
@@ -385,33 +383,33 @@ u8_possible_linebreaks_loop (const uint8_t *s, size_t n, const char *encoding,
                   last_prop = prop;
                   seen_space = NULL;
                 }
+            }
 
-              /* (LB9) Treat X (CM | ZWJ)* as if it were X, where X is any line
-                 break class except BK, CR, LF, NL, SP, or ZW.  */
-              if (!((prop == LBP_CM || prop == LBP_ZWJ)
-                    && !(prev_prop == LBP_BK || prev_prop == LBP_LF || prev_prop == LBP_CR
-                         || prev_prop == LBP_SP || prev_prop == LBP_ZW)))
-                {
-                  prev_initial_hyphen =
-                    (prop == LBP_HY || uc == 0x2010)
-                    && (prev_prop == LBP_BK || prev_prop == LBP_CR || prev_prop == LBP_LF
-                        || prev_prop == LBP_SP || prev_prop == LBP_ZW
-                        || prev_prop == LBP_CB || prev_prop == LBP_GL);
-                  prev_prop = (prop == LBP_VI && (prev_prop == LBP_AK
-                                                  || prev_prop == LBP_AL2
-                                                  || prev_prop == LBP_AS)
-                               ? LBP_AKLS_VI :
-                               prev_prop == LBP_HL && (prop == LBP_HY
-                                                       || (prop == LBP_BA && !ea))
-                               ? LBP_HL_BA :
-                               prop);
-                  prev2_ea = prev_ea;
-                  prev_ea = ea;
-                }
-              preceding_prop = prop;
+          /* (LB9) Treat X (CM | ZWJ)* as if it were X, where X is any line
+             break class except BK, CR, LF, NL, SP, or ZW.  */
+          if (!((prop == LBP_CM || prop == LBP_ZWJ)
+                && !(prev_prop == LBP_BK || prev_prop == LBP_LF || prev_prop == LBP_CR
+                     || prev_prop == LBP_SP || prev_prop == LBP_ZW)))
+            {
+              prev_initial_hyphen =
+                (prop == LBP_HY || uc == 0x2010)
+                && (prev_prop == LBP_BK || prev_prop == LBP_CR || prev_prop == LBP_LF
+                    || prev_prop == LBP_SP || prev_prop == LBP_ZW
+                    || prev_prop == LBP_CB || prev_prop == LBP_GL);
+              prev_prop = (prop == LBP_VI && (prev_prop == LBP_AK
+                                              || prev_prop == LBP_AL2
+                                              || prev_prop == LBP_AS)
+                           ? LBP_AKLS_VI :
+                           prev_prop == LBP_HL && (prop == LBP_HY
+                                                   || (prop == LBP_BA && !ea))
+                           ? LBP_HL_BA :
+                           prop);
+              prev2_ea = prev_ea;
+              prev_ea = ea;
+              prev_nus = nus;
             }
 
-          prev_nus = nus;
+          preceding_prop = prop;
 
           if (prop == LBP_RI)
             ri_count++;