diff --git a/io.c b/io.c
index f3c7ed6081..04807d7488 100644
--- a/io.c
+++ b/io.c
@@ -1302,13 +1302,21 @@ io_readpartial(argc, argv, io)
/*
* call-seq:
- * ios.read([integer [, buffer]]) => string, buffer, or nil
+ * ios.read([length [, buffer]]) => string, buffer, or nil
*
- * Reads at most integer bytes from the I/O stream, or to the
- * end of file if integer is omitted or is nil
.
+ * Reads at most length bytes from the I/O stream, or to the
+ * end of file if length is omitted or is nil
.
+ * length must be a non-negative integer or nil.
* If the optional buffer argument is present, it must reference
- * a String, which will receive the data. Returns nil
- * if called at end of file.
+ * a String, which will receive the data.
+ *
+ * At end of file, it returns nil
or ""
+ * depend on length.
+ * ios.read()
and
+ * ios.read(nil)
returns ""
.
+ * ios.read(positive-integer)
returns nil.
+ *
+ * ios.read(0)
returns ""
.
*
* f = File.new("testfile")
* f.read(16) #=> "This is line one"