Please back it out. __sccl() use plain chars, you can't just call wide chars __wcollate_range_cmp() from it. Never intermix plain chars and wide chars without conversion. The problem is somewhere else. The code used for [a-z] ranges in the format. Moreover, even if conversion added this code can't work with wchars by definition since uses the same loop as in regcomp() for (i = 0; i < 256; i ++)
Counting completely broken regcomp, our locale quickly becomes intermixing junk of chars and wchars without any conversion. Please anybody stop hacking here, especially blindly adding wchars everywhere without analyzing rest of code. If you see 256 or UCHAR_MAX somewhere, this function can't be converted to wchars. On 10.06.2016 8:21, Pedro F. Giffuni wrote: > Author: pfg > Date: Fri Jun 10 05:21:52 2016 > New Revision: 301777 > URL: https://svnweb.freebsd.org/changeset/base/301777 > > Log: > Fix regression from r301461. > > The fix to the __collate_range_cmp() ABI breakage missed some replacements > in libc's vfscanf(). Replace them with __wcollate_range_cmp() which > does what is expected. > > This was breaking applications like xterm and pidgin when using wide > characters. > > Reported by: Vitalij Satanivskij > Approved by: re > > Modified: > head/lib/libc/stdio/vfscanf.c > > Modified: head/lib/libc/stdio/vfscanf.c > ============================================================================== > --- head/lib/libc/stdio/vfscanf.c Fri Jun 10 04:04:55 2016 > (r301776) > +++ head/lib/libc/stdio/vfscanf.c Fri Jun 10 05:21:52 2016 > (r301777) > @@ -873,7 +873,7 @@ doswitch: > n = *fmt; > if (n == ']' > || (table->__collate_load_error ? n < c : > - __collate_range_cmp (table, n, c) < 0 > + __wcollate_range_cmp(table, n, c) < 0 > ) > ) { > c = '-'; > @@ -887,8 +887,8 @@ doswitch: > } while (c < n); > } else { > for (i = 0; i < 256; i ++) > - if ( __collate_range_cmp (table, c, > i) < 0 > - && __collate_range_cmp (table, i, > n) <= 0 > + if (__wcollate_range_cmp(table, c, i) < > 0 && > + __wcollate_range_cmp(table, i, n) > <= 0 > ) > tab[i] = v; > } > _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"