felipe                                   Sat, 10 Jul 2010 16:57:50 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=301154

Log:
- Workaround for YYACCEPT on __halt_compiler()

Changed paths:
    U   php/php-src/branches/LEMON/Zend/zend_compile.c
    U   php/php-src/branches/LEMON/Zend/zend_language_parser.y

Modified: php/php-src/branches/LEMON/Zend/zend_compile.c
===================================================================
--- php/php-src/branches/LEMON/Zend/zend_compile.c      2010-07-10 15:49:15 UTC 
(rev 301153)
+++ php/php-src/branches/LEMON/Zend/zend_compile.c      2010-07-10 16:57:50 UTC 
(rev 301154)
@@ -6103,7 +6103,7 @@

 int zendparse(TSRMLS_D) /* {{{ */
 {
-       int token;
+       int token, halting = 0;
        void *pParser;

        if ((pParser = ParseAlloc(malloc)) == NULL) {
@@ -6133,6 +6133,9 @@
                        case T_OPEN_TAG:
                        case T_WHITESPACE:
                                goto again;
+                       case T_HALT_COMPILER:
+                               halting = 1;
+                               break;
                        case T_END_HEREDOC:
                                efree(Z_STRVAL(zendlval.u.constant));
                                break;
@@ -6153,6 +6156,9 @@
                Parse(pParser, token, zendlval TSRMLS_CC);
                if (token == 0) {
                        break;
+               } else if (halting == 1 && token == T_SEMICOLON) {
+                       Parse(pParser, 0, zendlval TSRMLS_CC);
+                       break;
                }
        }
        ParseFree(pParser, free);

Modified: php/php-src/branches/LEMON/Zend/zend_language_parser.y
===================================================================
--- php/php-src/branches/LEMON/Zend/zend_language_parser.y      2010-07-10 
15:49:15 UTC (rev 301153)
+++ php/php-src/branches/LEMON/Zend/zend_language_parser.y      2010-07-10 
16:57:50 UTC (rev 301154)
@@ -186,7 +186,7 @@
 top_statement ::= statement.                                       { 
zend_verify_namespace(TSRMLS_C); }
 top_statement ::= function_declaration_statement.                  { 
zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); }
 top_statement ::= class_declaration_statement.                     { 
zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); }
-top_statement ::= HALT_COMPILER LPAREN RPAREN SEMICOLON.   { 
zend_do_halt_compiler_register(TSRMLS_C); /* YYACCEPT; */ }
+top_statement ::= HALT_COMPILER LPAREN RPAREN SEMICOLON.   { 
zend_do_halt_compiler_register(TSRMLS_C); }
 top_statement ::= NAMESPACE namespace_name(B) SEMICOLON.       { 
zend_do_begin_namespace(&B, 0 TSRMLS_CC); }
 top_statement ::= NAMESPACE namespace_name(B) LBRACE.          { 
zend_do_begin_namespace(&B, 1 TSRMLS_CC); }
 top_statement ::= top_statement_list RBRACE.                     { 
zend_do_end_namespace(TSRMLS_C); }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to