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"