diff --git a/io.c b/io.c
index 2c6eb35333..0464e5b4c5 100644
--- a/io.c
+++ b/io.c
@@ -1972,11 +1972,11 @@ rb_io_write_nonblock(VALUE io, VALUE str)
* length must be a non-negative integer or nil.
*
* If length is a positive integer,
- * It reads length bytes and
- * returns a string which is length bytes long.
- * If EOF is met after 1 or more bytes read but before length bytes read,
- * a shorter string is returned.
- * If EOF is met at beginning, nil is returned.
+ * it try to read length bytes.
+ * It returns nil or a string which length is 1 to length bytes.
+ * nil means it met EOF at beginning.
+ * The 1 to length-1 bytes string means it met EOF after reading the result.
+ * The length bytes string means it doesn't meet EOF.
*
* If length is omitted or is nil
,
* it reads until EOF.