summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-08-12 06:59:57 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-08-12 06:59:57 +0000
commitc48b4209c267299f52ad51b0e8d639679999465a (patch)
tree0eccd86184fdd6bebf2bb47fd26dd9e2d4646413 /parse.y
parent9af743fe0e8c7aa7a25a6805a64d499aab3032af (diff)
parse.y: CR in middle
* parse.y (parser_whole_match_p): treat CR in middle of a line as a mere whitespace. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y6
1 files changed, 5 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index 060691f7b7..f325733e66 100644
--- a/parse.y
+++ b/parse.y
@@ -6375,7 +6375,11 @@ parser_whole_match_p(struct parser_params *parser,
while (*p && ISSPACE(*p)) p++;
}
n = lex_pend - (p + len);
- if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return FALSE;
+ if (n < 0) return FALSE;
+ if (n > 0 && p[len] != '\n') {
+ if (p[len] != '\r') return FALSE;
+ if (n <= 1 || p[len+1] != '\n') return FALSE;
+ }
return strncmp(eos, p, len) == 0;
}