Hi Scott,

I noticed that Nuno changed yyless() to be like flex after your commit (not
in HEAD?  I considered that, but figured you guys wanted it different :-)),
but now the heredoc end part is wrong again (hehe), and I see Tony reported
the broken tests...  Attached patch puts it back to pre-re2c state.  Also
remembered a useless "case EOF;" to remove in zendlex() to match HEAD's
(added at end of '05 (v1.647.2.18) for bug #35382, later fixed in the
scanner; doesn't look like it ever did much anyway).

BTW, maybe you could change the name in that 5.2 NEWS entry to just "Matt"?
No big deal, but that's what it's been other than the first few entries. :-)


Thanks,
Matt


----- Original Message -----
From: "Scott MacVicar"
Sent: Tuesday, April 08, 2008

> Thanks Matt,
>
> I'll review these and merge them in with my other scanner fixes.
>
> Scott
Index: zend_compile.c
===================================================================
RCS file: /repository/ZendEngine2/zend_compile.c,v
retrieving revision 1.647.2.27.2.41.2.58
diff -u -r1.647.2.27.2.41.2.58 zend_compile.c
--- zend_compile.c      9 Apr 2008 08:55:45 -0000       1.647.2.27.2.41.2.58
+++ zend_compile.c      10 Apr 2008 12:52:00 -0000
@@ -4680,8 +4680,6 @@
                case T_END_NOWDOC:
                        efree(Z_STRVAL(zendlval->u.constant));
                        break;
-               case EOF:
-                       return EOF;
        }
 
        INIT_PZVAL(&zendlval->u.constant);
Index: zend_language_scanner.l
===================================================================
RCS file: /repository/ZendEngine2/zend_language_scanner.l,v
retrieving revision 1.131.2.11.2.13.2.14
diff -u -r1.131.2.11.2.13.2.14 zend_language_scanner.l
--- zend_language_scanner.l     9 Apr 2008 22:01:20 -0000       
1.131.2.11.2.13.2.14
+++ zend_language_scanner.l     10 Apr 2008 12:50:00 -0000
@@ -1733,9 +1733,9 @@
                /* Go back before last label char, to match in ST_END_HEREDOC 
state */
                yyless(yyleng - 2);
 
-               /* Subtract the label/newline length. yyleng must include 
newline
+               /* Subtract the remaining label length. yyleng must include 
newline
                 * before label, for zend_highlight/strip, tokenizer, etc. */
-               yyleng -= CG(heredoc_len) + 1;
+               yyleng -= CG(heredoc_len) - 1;
 
                CG(increment_lineno) = 1; /* For newline before label */
                BEGIN(ST_END_HEREDOC);
@@ -1885,9 +1885,9 @@
                /* Go back before last label char, to match in ST_END_NOWDOC 
state */
                yyless(yyleng - 2);
 
-               /* Subtract the label/newline length. yyleng must include 
newline
+               /* Subtract the remaining label length. yyleng must include 
newline
                 * before label, for zend_highlight/strip, tokenizer, etc. */
-               yyleng -= CG(heredoc_len) + 1;
+               yyleng -= CG(heredoc_len) - 1;
 
                CG(increment_lineno) = 1; /* For newline before label */
                BEGIN(ST_END_NOWDOC);

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to