]> granicus.if.org Git - php/commitdiff
Improve fix for bug #35382
authorIlia Alshanetsky <iliaa@php.net>
Thu, 8 Dec 2005 03:09:14 +0000 (03:09 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 8 Dec 2005 03:09:14 +0000 (03:09 +0000)
Zend/zend_language_scanner.l

index 332e5c0bf8b16039ba5f519475eceff0a33b6cc0..af4059fef7d0e53bb09b9212e44f58faca9788e0 100644 (file)
@@ -1461,16 +1461,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(INITIAL);
-       return EOF;
+<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} {