com php-src: Fixed compilator bug that might cause jump depended on unitialized value: Zend/zend_compile.c Zend/zend_langua ge_parser.y
| From: | Dmitry Stogov | Date: | Wed, 09 Jan 2013 13:16:47 +0000 |
| Subject: | com php-src: Fixed compilator bug that might cause jump depended on unitialized value: Zend/zend_compile.c Zend/zend_langua ge_parser.y | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-70897@lists.php.net to get a copy of this message | ||
Commit: d4650c5d69ffb49d476a2969c6200879bd424caf
Author: Dmitry Stogov <dmitry@zend.com> Wed, 9 Jan 2013 17:16:47 +0400
Parents: c05ee74e7ff28b49018bf3e8f452bfd5386d1b68
Branches: PHP-5.3 PHP-5.4 PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d4650c5d69ffb49d476a2969c6200879bd424caf
Log:
Fixed compilator bug that might cause jump depended on unitialized value
Changed paths:
M Zend/zend_compile.c
M Zend/zend_language_parser.y
Diff:
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index e395795...8382b48 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3414,6 +3414,7 @@ void zend_do_begin_class_declaration(const znode *class_token, znode
*class_name
/* Prefix class name with name of current namespace */
znode tmp;
+ tmp.op_type = IS_CONST;
tmp.u.constant = *CG(current_namespace);
zval_copy_ctor(&tmp.u.constant);
zend_do_build_namespace_name(&tmp, &tmp, class_name TSRMLS_CC);
@@ -3529,7 +3530,7 @@ void zend_do_end_class_declaration(const znode *class_token, const znode
*parent
ce->line_end = zend_get_compiled_lineno(TSRMLS_C);
if (!(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS))
- && ((parent_token->op_type != IS_UNUSED) || (ce->num_interfaces > 0))) {
+ && (parent_token || (ce->num_interfaces > 0))) {
zend_verify_abstract_class(ce TSRMLS_CC);
if (ce->num_interfaces) {
do_verify_abstract_class(TSRMLS_C);
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 2533f60..d24fc9c 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -316,13 +316,13 @@ unticked_class_declaration_statement:
implements_list
'{'
class_statement_list
- '}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); }
+ '}' { zend_do_end_class_declaration(&$1, &$3 TSRMLS_CC); }
| interface_entry T_STRING
{ zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); }
interface_extends_list
'{'
class_statement_list
- '}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); }
+ '}' { zend_do_end_class_declaration(&$1, NULL TSRMLS_CC); }
;