summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2004-04-20 14:14:55 +0000
committerAndi Gutmans <andi@php.net>2004-04-20 14:14:55 +0000
commit173782b73e944cfdd8af1dfe67746df8b4e2ac03 (patch)
tree02e4aae19107cf31dc1383fed374c7b62799e732
parent65bc57a81f46eb7bf7aaab1b257805876bd0bebf (diff)
downloadphp-git-173782b73e944cfdd8af1dfe67746df8b4e2ac03.tar.gz
- Fix bug #27283 - Exceptions where the last catch() statement was sometimes
- skipped.
-rw-r--r--Zend/zend_language_parser.y9
1 files changed, 7 insertions, 2 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index c4ebaa6940..6d85f8be7a 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -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); }
;