]> granicus.if.org Git - php/commitdiff
- Fix bug #27283 - Exceptions where the last catch() statement was sometimes
authorAndi Gutmans <andi@php.net>
Tue, 20 Apr 2004 14:14:55 +0000 (14:14 +0000)
committerAndi Gutmans <andi@php.net>
Tue, 20 Apr 2004 14:14:55 +0000 (14:14 +0000)
- skipped.

Zend/zend_language_parser.y

index c4ebaa694050039d63c7576f57c8b6548582408f..6d85f8be7a8745c1289742d1f41bc4888fb25fac 100644 (file)
@@ -229,8 +229,13 @@ additional_catches:
 ;
 
 non_empty_additional_catches:
-               non_empty_additional_catches T_CATCH '(' fully_qualified_class_name { $$.u.opline_num = get_next_op_number(CG(active_op_array)); } T_VARIABLE ')' { zend_do_begin_catch(&$2, &$4, &$6, 0 TSRMLS_CC); } '{' inner_statement_list '}' { zend_do_end_catch(&$2 TSRMLS_CC); }
-       |       T_CATCH '(' fully_qualified_class_name { $$.u.opline_num = get_next_op_number(CG(active_op_array)); } T_VARIABLE ')' { zend_do_begin_catch(&$1, &$3, &$5, 0 TSRMLS_CC); } '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); }
+               additional_catch { $$ = $1; }
+       |       non_empty_additional_catches additional_catch { $$ = $2; }
+;
+               
+
+additional_catch:
+       T_CATCH '(' fully_qualified_class_name { $$.u.opline_num = get_next_op_number(CG(active_op_array)); } T_VARIABLE ')' { zend_do_begin_catch(&$1, &$3, &$5, 0 TSRMLS_CC); } '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); }
 ;