svn commit: r284340 - head/contrib/libxo/libxo

Alexander Kabaev kan at FreeBSD.org
Sat Jun 13 15:14:40 UTC 2015


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;


More information about the svn-src-head mailing list