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