cygwin: select: use UNICODE console functions
For historical reasons peek_console was calling the functions PeekConsoleInputA and ReadConsoleInputA. However, these functions are not working correctly under at least codepage 65001 (UTF-8) on systems prior to Windows 10. Use PeekConsoleInputW and ReadConsoleInputW instead, which work correctly under all systems and all codepages. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
		@@ -886,7 +886,7 @@ peek_console (select_record *me, bool)
 | 
			
		||||
  for (;;)
 | 
			
		||||
    if (fh->bg_check (SIGTTIN, true) <= bg_eof)
 | 
			
		||||
      return me->read_ready = true;
 | 
			
		||||
    else if (!PeekConsoleInput (h, &irec, 1, &events_read) || !events_read)
 | 
			
		||||
    else if (!PeekConsoleInputW (h, &irec, 1, &events_read) || !events_read)
 | 
			
		||||
      break;
 | 
			
		||||
    else
 | 
			
		||||
      {
 | 
			
		||||
@@ -918,7 +918,7 @@ peek_console (select_record *me, bool)
 | 
			
		||||
	  }
 | 
			
		||||
 | 
			
		||||
	/* Read and discard the event */
 | 
			
		||||
	ReadConsoleInput (h, &irec, 1, &events_read);
 | 
			
		||||
	ReadConsoleInputW (h, &irec, 1, &events_read);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
  return me->write_ready;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user