From 69e5d34b40a762e21987a5aa4a876ee0d574bcf7 Mon Sep 17 00:00:00 2001 From: yugui Date: Mon, 30 May 2011 04:43:29 +0000 Subject: merges r31310 from trunk into ruby_1_9_2. -- * string.c (rb_str_each_line): check string's length when compare separator and string. [ruby-core:35815] fixes #4586 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@31809 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'string.c') diff --git a/string.c b/string.c index aa3029adbd..6f9fde11ce 100644 --- a/string.c +++ b/string.c @@ -5828,7 +5828,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); -- cgit v1.2.3