Author: glebius
Date: Tue Dec  6 00:09:52 2016
New Revision: 309584
URL: https://svnweb.freebsd.org/changeset/base/309584

Log:
  Merge r308330 by bapt:
  
    localedef: Fix ctype dump (fixed wide spread errors)
  
  See original commit for longer description.
  
  Errata Notice:        EN-16:21
  Approved by:  so

Modified:
  releng/11.0/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c
  releng/11.0/usr.bin/localedef/ctype.c
  releng/11.0/usr.bin/localedef/parser.y   (contents, props changed)
Directory Properties:
  releng/11.0/   (props changed)

Modified: releng/11.0/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c
==============================================================================
--- releng/11.0/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c       Tue Dec 
 6 00:06:16 2016        (r309583)
+++ releng/11.0/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c       Tue Dec 
 6 00:09:52 2016        (r309584)
@@ -88,7 +88,7 @@ static struct test {
                0xFFFF, 0x5D, 0x5B, 0x10000, 0x10FFFF, 0x5D, 0x0A
        },
 #ifdef __FreeBSD__
-       {        1, -1, -1,  1,  1, -1, 1,  1,  1, 1, -1,  1,  1, -1, -1,
+       {        1, -1, -1,  1,  1, -1, -1,  1,  1, 1, -1,  1,  1, -1, -1,
 #else
        {        1, -1, -1,  1,  1, -1, -1,  1,  1, -1, -1,  1,  1, -1, -1,
 #endif

Modified: releng/11.0/usr.bin/localedef/ctype.c
==============================================================================
--- releng/11.0/usr.bin/localedef/ctype.c       Tue Dec  6 00:06:16 2016        
(r309583)
+++ releng/11.0/usr.bin/localedef/ctype.c       Tue Dec  6 00:09:52 2016        
(r309584)
@@ -407,9 +407,9 @@ dump_ctype(void)
                        continue;
                }
 
-               if ((last_ct != NULL) && (last_ct->ctype == ctn->ctype)) {
+               if ((last_ct != NULL) && (last_ct->ctype == ctn->ctype) &&
+                   (last_ct->wc + 1 == wc)) {
                        ct[rl.runetype_ext_nranges-1].max = wc;
-                       last_ct = ctn;
                } else {
                        rl.runetype_ext_nranges++;
                        ct = realloc(ct,
@@ -417,8 +417,8 @@ dump_ctype(void)
                        ct[rl.runetype_ext_nranges - 1].min = wc;
                        ct[rl.runetype_ext_nranges - 1].max = wc;
                        ct[rl.runetype_ext_nranges - 1].map = ctn->ctype;
-                       last_ct = ctn;
                }
+               last_ct = ctn;
                if (ctn->tolower == 0) {
                        last_lo = NULL;
                } else if ((last_lo != NULL) &&

Modified: releng/11.0/usr.bin/localedef/parser.y
==============================================================================
--- releng/11.0/usr.bin/localedef/parser.y      Tue Dec  6 00:06:16 2016        
(r309583)
+++ releng/11.0/usr.bin/localedef/parser.y      Tue Dec  6 00:09:52 2016        
(r309584)
@@ -27,6 +27,8 @@
  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
  */
 
 /*
@@ -321,21 +323,18 @@ ctype_kw  : T_ISUPPER cc_list T_NL
                | T_TOLOWER conv_list T_NL
                ;
 
+cc_list                : cc_list T_SEMI cc_range_end
+               | cc_list T_SEMI cc_char
+               | cc_char
+               ;
 
-cc_list                : cc_list T_SEMI T_CHAR
+cc_range_end   : T_ELLIPSIS T_SEMI T_CHAR
                {
-                       add_ctype($3);
+                       add_ctype_range($3);
                }
-               | cc_list T_SEMI T_SYMBOL
-               {
-                       add_charmap_undefined($3);
-               }
-               | cc_list T_SEMI T_ELLIPSIS T_SEMI T_CHAR
-               {
-                       /* note that the endpoints *must* be characters */
-                       add_ctype_range($5);
-               }
-               | T_CHAR
+               ;
+
+cc_char                : T_CHAR
                {
                        add_ctype($1);
                }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to