Actions
Backport #7379
closedUnexpected result of Kernel#gets on Windows 8
Status:
Closed
Assignee:
Description
I found Kernel#gets returns invalid result for multi-byte string on Windows 8.
C:\Users\phasis>ruby -ve 'p gets'
ruby 2.0.0dev (2012-11-17 trunk 37691) [i386-mswin32_110]
한글
"\xC7\x00\xB1\x00\n"
After some debugging,I noticed that the previous ReadFile bug on console was fixed on Windows 8.
So the workaround code should be skipped on Windows 8.
Here is a patch:
cf. The OS version number of Windows 8 and Windows Server 2012 is 6.2.
diff --git a/win32.c b/win32.c.new
index 3446728..5635058 100644
--- a/win32.c
+++ b/win32.c.new
@@ -5902,7 +5902,7 @@ rb_w32_read(int fd, void *buf, size_t size)
}
ret = 0;
- isconsole = is_console(_osfhnd(fd));
- isconsole = is_console(_osfhnd(fd)) && !(osver.dwMajorVersion==6 && osver.dwMinorVersion==2);
if (isconsole) {
DWORD mode;
GetConsoleMode((HANDLE)_osfhnd(fd),&mode);
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0