Author: kan
Date: Sat Jun 13 15:14:39 2015
New Revision: 284340
URL: https://svnweb.freebsd.org/changeset/base/284340

Log:
  Unbreak libxo's handling of characters not representable in current locale
  
  The xo_format_string_direct function loops forever never advancing the
  processed string pointer when it encounters a character that makes
  mbrtowc fail. Make it emit '?' character instead, as it seems this is
  what the code intent was, sans bugs.
  
  Differential Revision: https://reviews.freebsd.org/D2802
  Reviewed by: marcel

Modified:
  head/contrib/libxo/libxo/libxo.c

Modified: head/contrib/libxo/libxo/libxo.c
==============================================================================
--- head/contrib/libxo/libxo/libxo.c    Sat Jun 13 14:24:31 2015        
(r284339)
+++ head/contrib/libxo/libxo/libxo.c    Sat Jun 13 15:14:39 2015        
(r284340)
@@ -2077,7 +2077,8 @@ xo_format_string_direct (xo_handle_t *xo
            ilen = mbrtowc(&wc, cp, ilen, &xop->xo_mbstate);
            if (ilen < 0) {             /* Invalid data; skip */
                xo_failure(xop, "invalid mbs char: %02hhx", *cp);
-               continue;
+               wc = L'?';
+               ilen = 1;
            }
            if (ilen == 0) {            /* Hit a wide NUL character */
                len = 0;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to