|
|
|
@ -493,10 +493,11 @@ static int bbs_build_from(bbs_t *bbs, zend_op_array *op_array, int count) /* {{{
|
|
|
|
|
for (i = 0; i < op_array->last_try_catch; i ++) {
|
|
|
|
|
zend_uint j;
|
|
|
|
|
zend_try_catch_element *e = &op_array->try_catch_array[i];
|
|
|
|
|
for (j = e->try_op; j < e->catch_op; j ++) {
|
|
|
|
|
oplineinfos[j].catchbbid = oplineinfos[e->catch_op].bbid;
|
|
|
|
|
zend_uint end = e->catch_op != 0 ? e->catch_op : e->finally_op;
|
|
|
|
|
for (j = e->try_op; j < end; j ++) {
|
|
|
|
|
oplineinfos[j].catchbbid = e->catch_op == 0 ? BBID_INVALID : oplineinfos[e->catch_op ].bbid;
|
|
|
|
|
# ifdef ZEND_ENGINE_2_5
|
|
|
|
|
oplineinfos[j].finallybbid = oplineinfos[e->finally_op].bbid;
|
|
|
|
|
oplineinfos[j].finallybbid = e->finally_op == 0 ? BBID_INVALID : oplineinfos[e->finally_op].bbid;
|
|
|
|
|
# endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -609,13 +610,13 @@ static void bbs_restore_opnum(bbs_t *bbs, zend_op_array *op_array) /* {{{ */
|
|
|
|
|
) {
|
|
|
|
|
if (bb->catch != BBID_INVALID
|
|
|
|
|
# ifdef ZEND_ENGINE_2_5
|
|
|
|
|
&& bb->finally != BBID_INVALID
|
|
|
|
|
|| bb->finally != BBID_INVALID
|
|
|
|
|
# endif
|
|
|
|
|
) {
|
|
|
|
|
zend_uint try_op = bbs_get(bbs, bbid)->opnum;
|
|
|
|
|
zend_uint catch_op = bbs_get(bbs, bb->catch)->opnum;
|
|
|
|
|
zend_uint catch_op = bb->catch == BBID_INVALID ? 0 : bbs_get(bbs, bb->catch )->opnum;
|
|
|
|
|
# ifdef ZEND_ENGINE_2_5
|
|
|
|
|
zend_uint finally_op = bbs_get(bbs, bb->finally)->opnum;
|
|
|
|
|
zend_uint finally_op = bb->finally == BBID_INVALID ? 0 : bbs_get(bbs, bb->finally)->opnum;
|
|
|
|
|
# endif
|
|
|
|
|
|
|
|
|
|
zend_bool already_in_try_catch = 0;
|
|
|
|
|