Browse Source

Use replacement character for non-printable Unicode

Luke Dashjr 12 years ago
parent
commit
a6d69c197d
1 changed files with 8 additions and 5 deletions
  1. 8 5
      miner.c

+ 8 - 5
miner.c

@@ -3396,12 +3396,15 @@ void bfg_waddstr(WINDOW *win, const char *s)
 #endif
 			default:
 #ifdef USE_UNICODE
-				if (w > WCHAR_MAX)
-#if REPLACEMENT_CHAR > WCHAR_MAX
-					w = '?';
-#else
-					w = REPLACEMENT_CHAR;
+				if (w > WCHAR_MAX || !(iswprint(w) || w == '\n'))
+				{
+#if REPLACEMENT_CHAR <= WCHAR_MAX
+					if (iswprint(REPLACEMENT_CHAR))
+						w = REPLACEMENT_CHAR;
+					else
 #endif
+						w = '?';
+				}
 				{
 					wchar_t wc = w;
 					waddnwstr(win, &wc, 1);