summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend-scanner.l13
1 files changed, 12 insertions, 1 deletions
diff --git a/Zend/zend-scanner.l b/Zend/zend-scanner.l
index 03131240d9..3b359dd3b1 100644
--- a/Zend/zend-scanner.l
+++ b/Zend/zend-scanner.l
@@ -1010,16 +1010,27 @@ TLS_VARS;
}
-<HEREDOC>^{LABEL}("\r")?"\n" {
+<HEREDOC>^{LABEL}(";")?("\r")?"\n" {
int label_len;
+ unsigned char unput_semicolon;
if (yytext[yyleng-2]=='\r') {
label_len = yyleng-2;
} else {
label_len = yyleng-1;
}
+
+ if (yytext[label_len-1]==';') {
+ label_len--;
+ unput_semicolon=1;
+ } else{
+ unput_semicolon=0;
+ }
if (label_len==CG(heredoc_len) && !memcmp(yytext, CG(heredoc), label_len)) {
+ if (unput_semicolon) {
+ unput(';');
+ }
efree(CG(heredoc));
CG(heredoc)=NULL;
CG(heredoc_len)=0;