Browse Source

Bugfix: Let libc do any translation for %lc before adding wide characters to curses

Luke Dashjr 12 years ago
parent
commit
467b0ea79f
1 changed files with 7 additions and 6 deletions
  1. 7 6
      miner.c

+ 7 - 6
miner.c

@@ -3536,7 +3536,6 @@ void bfg_waddstr(WINDOW *win, const char *s)
 				if (w > WCHAR_MAX || !iswprint(w))
 					w = '*';
 			default:
-#ifdef USE_UNICODE
 				if (w > WCHAR_MAX || !(iswprint(w) || w == '\n'))
 				{
 #if REPLACEMENT_CHAR <= WCHAR_MAX
@@ -3547,13 +3546,15 @@ void bfg_waddstr(WINDOW *win, const char *s)
 						w = '?';
 				}
 				{
-					wchar_t wc = w;
-					waddnwstr(win, &wc, 1);
-				}
+#ifdef USE_UNICODE
+					wchar_t wbuf[0x10];
+					int wbuflen = sizeof(wbuf) / sizeof(*wbuf);
+					wbuflen = swprintf(wbuf, wbuflen, L"%lc", (wint_t)w);
+					waddnwstr(win, wbuf, wbuflen);
 #else
-				// TODO: Maybe try using sprintf with %ls?
-				waddch(win, '?');
+					wprintw(win, "%lc", (wint_t)w);
 #endif
+				}
 		}
 	}
 }