]> granicus.if.org Git - php/commitdiff
Fixed bug #36513 (comment will be outputed in last line)
authorDmitry Stogov <dmitry@php.net>
Thu, 13 Apr 2006 13:48:28 +0000 (13:48 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 13 Apr 2006 13:48:28 +0000 (13:48 +0000)
NEWS
Zend/tests/bug36513.phpt [new file with mode: 0755]
Zend/zend_language_scanner.l

diff --git a/NEWS b/NEWS
index 7a06400b58c5c7e592982777cfc90b90e43caddf..47b50a1602095bc20697ac7586b18ebb929d39ae 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -16,6 +16,7 @@ PHP                                                                        NEWS
 - Fixed bug #37046 (foreach breaks static scope). (Dmitry)
 - Fixed bug #37002 (Have to quote literals in INI when concatenating with
   vars). (Dmitry)
+- Fixed bug #36513 (comment will be outputed in last line). (Dmitry)
 
 06 Apr 2006, PHP 5.1.3RC3
 - Eliminated run-time constant fetching for TRUE, FALSE and NULL. (Dmitry)
diff --git a/Zend/tests/bug36513.phpt b/Zend/tests/bug36513.phpt
new file mode 100755 (executable)
index 0000000..f46da4e
--- /dev/null
@@ -0,0 +1,22 @@
+--TEST--
+Bug #36513 (comment will be outputed in last line)
+--FILE--
+<?php 
+function test($s) {
+  echo "'".trim(str_replace("&nbsp;", " ", htmlspecialchars_decode(strip_tags(highlight_string($s,1)))))."'\n";
+}
+
+eval('echo "1";//2');
+eval('echo 3; //{ 4?>5');
+echo "\n";
+
+//test('<?php echo "1";//');
+test('<?php echo "1";//2');
+test('<?php echo "1";//22');
+test('<?php echo 3; // 4 ?>5');
+?>
+--EXPECT--
+135
+'<?php echo "1";//2'
+'<?php echo "1";//22'
+'<?php echo 3; // 4 ?>5'
index 66e98988f74594143b0358804cba564b996d39e1..57581404f3e2713516c1cbe3fcc02673d8aa223e 100644 (file)
@@ -1461,7 +1461,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
        yymore();
 }
 
-<ST_ONE_LINE_COMMENT>[^\n\r?%>]+{ANY_CHAR} {
+<ST_ONE_LINE_COMMENT>[^\n\r?%>]*{ANY_CHAR} {
        switch (yytext[yyleng-1]) {
                case '?': case '%': case '>':
                        yyless(yyleng-1);
@@ -1491,7 +1491,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
 <ST_ONE_LINE_COMMENT>"?>"|"%>" {
     if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */
                zendlval->value.str.val = yytext; /* no copying - intentional */
-               zendlval->value.str.len = yyleng;
+               zendlval->value.str.len = yyleng-2;
                zendlval->type = IS_STRING;
                yyless(yyleng-2);
                BEGIN(ST_IN_SCRIPTING);