Skip to content

Commit d4650c5

Browse files
committed
Fixed compilator bug that might cause jump depended on unitialized value
1 parent c05ee74 commit d4650c5

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

Zend/zend_compile.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3414,6 +3414,7 @@ void zend_do_begin_class_declaration(const znode *class_token, znode *class_name
34143414
/* Prefix class name with name of current namespace */
34153415
znode tmp;
34163416

3417+
tmp.op_type = IS_CONST;
34173418
tmp.u.constant = *CG(current_namespace);
34183419
zval_copy_ctor(&tmp.u.constant);
34193420
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
35293530
ce->line_end = zend_get_compiled_lineno(TSRMLS_C);
35303531

35313532
if (!(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS))
3532-
&& ((parent_token->op_type != IS_UNUSED) || (ce->num_interfaces > 0))) {
3533+
&& (parent_token || (ce->num_interfaces > 0))) {
35333534
zend_verify_abstract_class(ce TSRMLS_CC);
35343535
if (ce->num_interfaces) {
35353536
do_verify_abstract_class(TSRMLS_C);

Zend/zend_language_parser.y

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,13 +316,13 @@ unticked_class_declaration_statement:
316316
implements_list
317317
'{'
318318
class_statement_list
319-
'}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); }
319+
'}' { zend_do_end_class_declaration(&$1, &$3 TSRMLS_CC); }
320320
| interface_entry T_STRING
321321
{ zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); }
322322
interface_extends_list
323323
'{'
324324
class_statement_list
325-
'}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); }
325+
'}' { zend_do_end_class_declaration(&$1, NULL TSRMLS_CC); }
326326
;
327327

328328

0 commit comments

Comments
 (0)