]> granicus.if.org Git - php/commitdiff
MFB51:
authorIlia Alshanetsky <iliaa@php.net>
Thu, 8 Dec 2005 03:12:34 +0000 (03:12 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 8 Dec 2005 03:12:34 +0000 (03:12 +0000)
fix for bug #35382
fix for bug #35411

Zend/zend_language_scanner.l

index 1d4798cdf90b15232f4d9fda013488df32a6f189..57a6330ac2a3d89b2afb865097d26c645e3086c2 100644 (file)
@@ -2106,16 +2106,22 @@ NEWLINE ("\r"|"\n"|"\r\n")
        yymore();
 }
 
-<ST_ONE_LINE_COMMENT>[^\n\r?%>]+ {
-       yymore();
-}
-
-<ST_ONE_LINE_COMMENT><<EOF>> {
-       zendlval->value.str.val = yytext; /* no copying - intentional */
-       zendlval->value.str.len = yyleng;
-       zendlval->type = IS_STRING;
-       BEGIN(ST_IN_SCRIPTING);
-       return T_COMMENT;
+<ST_ONE_LINE_COMMENT>[^\n\r?%>]+{ANY_CHAR} {
+       switch (yytext[yyleng-1]) {
+               case '?': case '%': case '>':
+                       yyless(yyleng-1);
+                       yymore();
+                       break;
+               case '\n':
+                       CG(zend_lineno)++;
+                       /* intentional fall through */
+               default:
+                       zendlval->value.str.val = yytext; /* no copying - intentional */
+                       zendlval->value.str.len = yyleng;
+                       zendlval->type = IS_STRING;
+                       BEGIN(ST_IN_SCRIPTING);
+                       return T_COMMENT;
+       }
 }
 
 <ST_ONE_LINE_COMMENT>{NEWLINE} {
@@ -2435,9 +2441,8 @@ NEWLINE ("\r"|"\n"|"\r\n")
        }
 }
 
-
-<ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC>"\\{$" {
-       if (!zend_copy_string_value(zendlval, yytext+1, yyleng-1, CG(literal_type) TSRMLS_CC)) {
+<ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC>"\\{" {
+       if (!zend_copy_string_value(zendlval, yytext, yyleng, CG(literal_type) TSRMLS_CC)) {
                return 0;
        }
        return T_STRING;