diff options
-rw-r--r-- | t/comp/parser.t | 10 | ||||
-rw-r--r-- | toke.c | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/t/comp/parser.t b/t/comp/parser.t index 7c0db7fa37..4f2da90f50 100644 --- a/t/comp/parser.t +++ b/t/comp/parser.t @@ -3,7 +3,7 @@ # Checks if the parser behaves correctly in edge cases # (including weird syntax errors) -print "1..154\n"; +print "1..155\n"; sub failed { my ($got, $expected, $name) = @_; @@ -450,6 +450,14 @@ for my $pkg(()){} $pkg = 3; is $pkg, 3, '[perl #114942] for my $foo()){} $foo'; +eval 'Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' + .'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' + .'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' + .'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' + .'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' + .'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo'; +like $@, "^Identifier too long at ", 'ident buffer overflow'; + # Add new tests HERE (above this line) # bug #74022: Loop on characters in \p{OtherIDContinue} @@ -9244,7 +9244,7 @@ S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool else if ( isWORDCHAR_A(**s) ) { do { *(*d)++ = *(*s)++; - } while isWORDCHAR_A(**s); + } while (isWORDCHAR_A(**s) && *d < e); } else if (allow_package && **s == '\'' && isIDFIRST_lazy_if(*s+1,is_utf8)) { *(*d)++ = ':'; |