mirror of
https://github.com/php/php-src.git
synced 2024-11-24 10:24:11 +08:00
Fixed bug #35017 (Exception thrown in error handler may cause unexpected behavior)
This commit is contained in:
parent
24a80c3ebf
commit
681405fc4a
2
NEWS
2
NEWS
@ -3,6 +3,8 @@ PHP NEWS
|
||||
?? Nov 2005, PHP 5.1
|
||||
- Fixed bugs #35022, #35019 (Regression in the behavior of key() and current()
|
||||
functions). (Ilia)
|
||||
- Fixed bug #35017 (Exception thrown in error handler may cause unexpected
|
||||
behavior). (Dmitry)
|
||||
- Fixed bug #35014 (array_product() always returns 0). (Ilia)
|
||||
|
||||
28 Oct 2005, PHP 5.1 Release Candidate 4
|
||||
|
21
Zend/tests/bug35017.phpt
Executable file
21
Zend/tests/bug35017.phpt
Executable file
@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #35017 (Exception thrown in error handler may cause unexpected behavior)
|
||||
--FILE--
|
||||
<?php
|
||||
set_error_handler('errorHandler');
|
||||
try {
|
||||
if ($a) {
|
||||
echo "1\n";
|
||||
} else {
|
||||
echo "0\n";
|
||||
}
|
||||
echo "?\n";
|
||||
} catch(Exception $e) {
|
||||
echo "This Exception should be catched\n";
|
||||
}
|
||||
function errorHandler($errno, $errstr, $errfile, $errline, $vars) {
|
||||
throw new Exception('Some Exception');
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
This Exception should be catched
|
@ -1371,6 +1371,11 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_v
|
||||
CHECK_SYMBOL_TABLES() \
|
||||
EX(opline) = new_op
|
||||
|
||||
#define ZEND_VM_JMP(new_op) \
|
||||
CHECK_SYMBOL_TABLES() \
|
||||
EX(opline) = EG(exception)?EX(opline)+1:new_op; \
|
||||
ZEND_VM_CONTINUE()
|
||||
|
||||
#define ZEND_VM_INC_OPCODE() \
|
||||
if (!EG(exception)) { \
|
||||
CHECK_SYMBOL_TABLES() \
|
||||
@ -1388,9 +1393,6 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_v
|
||||
EG(current_execute_data) = EX(prev_execute_data); \
|
||||
ZEND_VM_RETURN()
|
||||
|
||||
#define ZEND_VM_CONTINUE_JMP() \
|
||||
ZEND_VM_CONTINUE()
|
||||
|
||||
#include "zend_vm_execute.h"
|
||||
|
||||
ZEND_API int zend_set_user_opcode_handler(zend_uchar opcode, opcode_handler_t handler)
|
||||
|
@ -1438,8 +1438,7 @@ ZEND_VM_HANDLER(43, ZEND_JMPZ, CONST|TMP|VAR|CV, ANY)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -1456,8 +1455,7 @@ ZEND_VM_HANDLER(44, ZEND_JMPNZ, CONST|TMP|VAR|CV, ANY)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -1474,14 +1472,12 @@ ZEND_VM_HANDLER(45, ZEND_JMPZNZ, CONST|TMP|VAR|CV, ANY)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on true to %d\n", opline->extended_value);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
} else {
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1498,8 +1494,7 @@ ZEND_VM_HANDLER(46, ZEND_JMPZ_EX, CONST|TMP|VAR|CV, ANY)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -1517,8 +1512,7 @@ ZEND_VM_HANDLER(47, ZEND_JMPNZ_EX, CONST|TMP|VAR|CV, ANY)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -2339,26 +2333,24 @@ ZEND_VM_HANDLER(50, ZEND_BRK, ANY, CONST|TMP|VAR|CV)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
zend_free_op free_op2;
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R),
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->brk);
|
||||
el = zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R), opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
FREE_OP2();
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
|
||||
}
|
||||
|
||||
ZEND_VM_HANDLER(51, ZEND_CONT, ANY, CONST|TMP|VAR|CV)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
zend_free_op free_op2;
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R),
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->cont);
|
||||
el = zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R), opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
FREE_OP2();
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
|
||||
}
|
||||
|
||||
ZEND_VM_HANDLER(48, ZEND_CASE, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
|
||||
@ -2428,8 +2420,7 @@ ZEND_VM_HANDLER(68, ZEND_NEW, ANY, ANY)
|
||||
} else {
|
||||
zval_ptr_dtor(&object_zval);
|
||||
}
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes + opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + opline->op2.u.opline_num);
|
||||
} else {
|
||||
SELECTIVE_PZVAL_LOCK(object_zval, &opline->result);
|
||||
EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
|
||||
@ -2976,8 +2967,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY)
|
||||
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
|
||||
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
|
||||
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
|
||||
ce = Z_OBJCE_PP(array_ptr_ptr);
|
||||
@ -3072,8 +3062,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY)
|
||||
FREE_OP1_IF_VAR();
|
||||
}
|
||||
if (is_empty) {
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
} else {
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -3099,8 +3088,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY)
|
||||
default:
|
||||
case ZEND_ITER_INVALID:
|
||||
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
|
||||
case ZEND_ITER_PLAIN_OBJECT: {
|
||||
char *class_name, *prop_name;
|
||||
@ -3110,8 +3098,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY)
|
||||
do {
|
||||
if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
|
||||
/* reached end of iteration */
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 0, NULL);
|
||||
|
||||
@ -3130,8 +3117,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY)
|
||||
fe_ht = HASH_OF(array);
|
||||
if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
|
||||
/* reached end of iteration */
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
if (use_key) {
|
||||
key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 1, NULL);
|
||||
@ -3158,8 +3144,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY)
|
||||
zval_ptr_dtor(&array);
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
iter->funcs->get_current_data(iter, &value TSRMLS_CC);
|
||||
if (EG(exception)) {
|
||||
@ -3169,8 +3154,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY)
|
||||
}
|
||||
if (!value) {
|
||||
/* failure in get_current_data */
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
if (use_key) {
|
||||
if (iter->funcs->get_current_key) {
|
||||
|
@ -403,8 +403,7 @@ static int ZEND_NEW_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
} else {
|
||||
zval_ptr_dtor(&object_zval);
|
||||
}
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes + opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + opline->op2.u.opline_num);
|
||||
} else {
|
||||
SELECTIVE_PZVAL_LOCK(object_zval, &opline->result);
|
||||
EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
|
||||
@ -765,26 +764,24 @@ static int ZEND_BRK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(&opline->op2.u.constant,
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->brk);
|
||||
el = zend_brk_cont(&opline->op2.u.constant, opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
|
||||
}
|
||||
|
||||
static int ZEND_CONT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(&opline->op2.u.constant,
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->cont);
|
||||
el = zend_brk_cont(&opline->op2.u.constant, opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
|
||||
}
|
||||
|
||||
static int ZEND_FETCH_CLASS_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
@ -916,26 +913,24 @@ static int ZEND_BRK_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
zend_free_op free_op2;
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC),
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->brk);
|
||||
el = zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
zval_dtor(free_op2.var);
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
|
||||
}
|
||||
|
||||
static int ZEND_CONT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
zend_free_op free_op2;
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC),
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->cont);
|
||||
el = zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
zval_dtor(free_op2.var);
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
|
||||
}
|
||||
|
||||
static int ZEND_FETCH_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
@ -1067,26 +1062,24 @@ static int ZEND_BRK_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
zend_free_op free_op2;
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC),
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->brk);
|
||||
el = zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
|
||||
}
|
||||
|
||||
static int ZEND_CONT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
zend_free_op free_op2;
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC),
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->cont);
|
||||
el = zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
|
||||
}
|
||||
|
||||
static int ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
@ -1298,26 +1291,24 @@ static int ZEND_BRK_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC),
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->brk);
|
||||
el = zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC), opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
|
||||
}
|
||||
|
||||
static int ZEND_CONT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
zend_op *opline = EX(opline);
|
||||
|
||||
zend_brk_cont_element *el;
|
||||
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
|
||||
zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC),
|
||||
opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC)->cont);
|
||||
el = zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC), opline->op1.u.opline_num,
|
||||
EX(op_array), EX(Ts) TSRMLS_CC);
|
||||
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
|
||||
}
|
||||
|
||||
static int ZEND_BW_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
@ -1496,8 +1487,7 @@ static int ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -1513,8 +1503,7 @@ static int ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -1530,14 +1519,12 @@ static int ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on true to %d\n", opline->extended_value);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
} else {
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1553,8 +1540,7 @@ static int ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -1571,8 +1557,7 @@ static int ZEND_JMPNZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -2026,8 +2011,7 @@ static int ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
|
||||
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
|
||||
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
|
||||
ce = Z_OBJCE_PP(array_ptr_ptr);
|
||||
@ -2122,8 +2106,7 @@ static int ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
|
||||
}
|
||||
if (is_empty) {
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
} else {
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -3914,8 +3897,7 @@ static int ZEND_JMPZ_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -3932,8 +3914,7 @@ static int ZEND_JMPNZ_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -3950,14 +3931,12 @@ static int ZEND_JMPZNZ_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on true to %d\n", opline->extended_value);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
} else {
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3974,8 +3953,7 @@ static int ZEND_JMPZ_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -3993,8 +3971,7 @@ static int ZEND_JMPNZ_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -4445,8 +4422,7 @@ static int ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
|
||||
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
|
||||
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
|
||||
ce = Z_OBJCE_PP(array_ptr_ptr);
|
||||
@ -4541,8 +4517,7 @@ static int ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
|
||||
}
|
||||
if (is_empty) {
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
} else {
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -6824,8 +6799,7 @@ static int ZEND_JMPZ_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -6842,8 +6816,7 @@ static int ZEND_JMPNZ_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -6860,14 +6833,12 @@ static int ZEND_JMPZNZ_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on true to %d\n", opline->extended_value);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
} else {
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6884,8 +6855,7 @@ static int ZEND_JMPZ_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -6903,8 +6873,7 @@ static int ZEND_JMPNZ_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -7445,8 +7414,7 @@ static int ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
|
||||
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
|
||||
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
|
||||
ce = Z_OBJCE_PP(array_ptr_ptr);
|
||||
@ -7541,8 +7509,7 @@ static int ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
|
||||
}
|
||||
if (is_empty) {
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
} else {
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -7568,8 +7535,7 @@ static int ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
default:
|
||||
case ZEND_ITER_INVALID:
|
||||
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
|
||||
case ZEND_ITER_PLAIN_OBJECT: {
|
||||
char *class_name, *prop_name;
|
||||
@ -7579,8 +7545,7 @@ static int ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
do {
|
||||
if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
|
||||
/* reached end of iteration */
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 0, NULL);
|
||||
|
||||
@ -7599,8 +7564,7 @@ static int ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
fe_ht = HASH_OF(array);
|
||||
if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
|
||||
/* reached end of iteration */
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
if (use_key) {
|
||||
key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 1, NULL);
|
||||
@ -7627,8 +7591,7 @@ static int ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
zval_ptr_dtor(&array);
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
iter->funcs->get_current_data(iter, &value TSRMLS_CC);
|
||||
if (EG(exception)) {
|
||||
@ -7638,8 +7601,7 @@ static int ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
}
|
||||
if (!value) {
|
||||
/* failure in get_current_data */
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
if (use_key) {
|
||||
if (iter->funcs->get_current_key) {
|
||||
@ -18938,8 +18900,7 @@ static int ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -18955,8 +18916,7 @@ static int ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
@ -18972,14 +18932,12 @@ static int ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on true to %d\n", opline->extended_value);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
ZEND_VM_CONTINUE(); /* CHECK_ME */
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
|
||||
} else {
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -18995,8 +18953,7 @@ static int ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -19013,8 +18970,7 @@ static int ZEND_JMPNZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
|
||||
#endif
|
||||
ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(opline->op2.u.jmp_addr);
|
||||
}
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -19547,8 +19503,7 @@ static int ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
|
||||
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
|
||||
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
}
|
||||
|
||||
ce = Z_OBJCE_PP(array_ptr_ptr);
|
||||
@ -19643,8 +19598,7 @@ static int ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
|
||||
}
|
||||
if (is_empty) {
|
||||
ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
ZEND_VM_CONTINUE_JMP();
|
||||
ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
|
||||
} else {
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user