Issue #8427 has been updated by phasis68 (Heesob Park).


This bug is caused by changesets r28035, r29980 and r30280.

Here is a possible workaround patch:

diff --git a/win32.c b/win32.c.new
index 318af2f..b821cd4 100644
--- a/win32.c
+++ b/win32.c.new
@@ -6058,6 +6058,10 @@ rb_w32_read(int fd, void *buf, size_t size)
 	DWORD mode;
 	GetConsoleMode((HANDLE)_osfhnd(fd),&mode);
 	islineinput = (mode & ENABLE_LINE_INPUT) != 0;
+	if(size > 20480) {
+	    size = 20480;
+	    isconsole = FALSE;
+	}
     }
   retry:
     /* get rid of console reading bug */

----------------------------------------
Bug #8427: gets method truncates strings longer than 255 characters in Windows 7
https://bugs.ruby-lang.org/issues/8427#change-39442

Author: jen (Jen Marsh)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 2.0.0p195 (2013-05-14) [x64-mingw32]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


When using the gets method from a Windows 7 command line (or XP according to other users), long input strings are truncated to 255 characters.  Here is an example of code:
    puts "Enter long string"
    long_string = gets
    puts "size of string : #{long_string.length}"
    puts "string: #{long_string}" 
For input strings of length exceeding 255 characters, the entered string is always truncated to 255 characters.


-- 
http://bugs.ruby-lang.org/