diff --git a/ChangeLog b/ChangeLog
index 097d2ad889822ce28d7e86d1824fcabd39bdf63c..6d8c9b7404f405de903057a20d33992af1433650 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -89,9 +89,8 @@ CVS code -
 	  history_reset(); changes to nanogetstr(). (DLR)
 	- Various character-handling cleanups.  If we get an invalid
 	  multibyte sequence, treat it as Unicode FFFD (Replacement
-	  Character), unless we're determining if it's a control
-	  character or searching for a match to it.  Also, remove
-	  unneeded variables and checks when parsing multibyte
+	  Character), unless we're searching for a match to it.  Also,
+	  remove unneeded variables and checks when parsing multibyte
 	  sequences.  Changes to is_alnum_mbchar(), is_blank_mbchar(),
 	  is_cntrl_mbchar(), is_punct_mbchar(), control_mbrep(),
 	  mbwidth(), make_mbchar(), parse_mbchar(), mbstrncasecmp(),
diff --git a/src/chars.c b/src/chars.c
index bb41f6000ae4af27270e4273b8b0e3433d992b62..912b89fdcaf501a880c48e8fa349174a1e6d125d 100644
--- a/src/chars.c
+++ b/src/chars.c
@@ -139,7 +139,7 @@ bool is_cntrl_mbchar(const char *c)
 
 	if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
 	    mbtowc(NULL, NULL, 0);
-	    wc = (unsigned char)*c;
+	    wc = bad_wchar;
 	}
 
 	return is_cntrl_wchar(wc);