diff options
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -6051,7 +6051,8 @@ rb_str_each_line(int argc, VALUE *argv, VALUE str) p -= n; } if (c == newline && - (rslen <= 1 || memcmp(RSTRING_PTR(rs), p, rslen) == 0)) { + (rslen <= 1 || + (pend - p >= rslen && memcmp(RSTRING_PTR(rs), p, rslen) == 0))) { line = rb_str_new5(str, s, p - s + (rslen ? rslen : n)); OBJ_INFECT(line, str); rb_enc_cr_str_copy_for_substr(line, str); |