svn commit: r309584 - in releng/11.0: contrib/netbsd-tests/lib/libc/locale usr.bin/localedef

Gleb Smirnoff glebius at FreeBSD.org
Tue Dec 6 00:09:54 UTC 2016


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);
 		}


More information about the svn-src-all mailing list