diff options
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | Zend/zend_execute.c | 18 | ||||
-rw-r--r-- | Zend/zend_extensions.h | 6 | ||||
-rw-r--r-- | Zend/zend_vm_def.h | 6 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 6 |
5 files changed, 19 insertions, 18 deletions
@@ -3,6 +3,7 @@ PHP NEWS ?? ??? 2016, PHP 7.1.0 - Core: + . Change statement and fcall extension handlers to accept frame. (Joe) . Implemented safe execution timeout handling, that prevents rundom crashes after "Maximum execution time exceeded" error. (Dmitry) . Fixed bug #62210 (Exceptions can leak temporary variables). (Dmitry, Bob) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 8213164d24..eb685e8104 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -65,9 +65,9 @@ typedef int (ZEND_FASTCALL *incdec_t)(zval *); #define get_obj_zval_ptr_ptr(op_type, node, ex, should_free, type) _get_obj_zval_ptr_ptr(op_type, node, ex, should_free, type) /* Prototypes */ -static void zend_extension_statement_handler(const zend_extension *extension, zend_op_array *op_array); -static void zend_extension_fcall_begin_handler(const zend_extension *extension, zend_op_array *op_array); -static void zend_extension_fcall_end_handler(const zend_extension *extension, zend_op_array *op_array); +static void zend_extension_statement_handler(const zend_extension *extension, zend_execute_data *frame); +static void zend_extension_fcall_begin_handler(const zend_extension *extension, zend_execute_data *frame); +static void zend_extension_fcall_end_handler(const zend_extension *extension, zend_execute_data *frame); #define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED) @@ -1508,26 +1508,26 @@ static zend_never_inline void zend_assign_op_overloaded_property(zval *object, z } /* Utility Functions for Extensions */ -static void zend_extension_statement_handler(const zend_extension *extension, zend_op_array *op_array) +static void zend_extension_statement_handler(const zend_extension *extension, zend_execute_data *frame) { if (extension->statement_handler) { - extension->statement_handler(op_array); + extension->statement_handler(frame); } } -static void zend_extension_fcall_begin_handler(const zend_extension *extension, zend_op_array *op_array) +static void zend_extension_fcall_begin_handler(const zend_extension *extension, zend_execute_data *frame) { if (extension->fcall_begin_handler) { - extension->fcall_begin_handler(op_array); + extension->fcall_begin_handler(frame); } } -static void zend_extension_fcall_end_handler(const zend_extension *extension, zend_op_array *op_array) +static void zend_extension_fcall_end_handler(const zend_extension *extension, zend_execute_data *frame) { if (extension->fcall_end_handler) { - extension->fcall_end_handler(op_array); + extension->fcall_end_handler(frame); } } diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h index a0e570a7ae..862c18ad75 100644 --- a/Zend/zend_extensions.h +++ b/Zend/zend_extensions.h @@ -67,9 +67,9 @@ typedef void (*message_handler_func_t)(int message, void *arg); typedef void (*op_array_handler_func_t)(zend_op_array *op_array); -typedef void (*statement_handler_func_t)(zend_op_array *op_array); -typedef void (*fcall_begin_handler_func_t)(zend_op_array *op_array); -typedef void (*fcall_end_handler_func_t)(zend_op_array *op_array); +typedef void (*statement_handler_func_t)(zend_execute_data *frame); +typedef void (*fcall_begin_handler_func_t)(zend_execute_data *frame); +typedef void (*fcall_end_handler_func_t)(zend_execute_data *frame); typedef void (*op_array_ctor_func_t)(zend_op_array *op_array); typedef void (*op_array_dtor_func_t)(zend_op_array *op_array); diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index afd0b1a398..791b6fecea 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -6796,7 +6796,7 @@ ZEND_VM_HANDLER(101, ZEND_EXT_STMT, ANY, ANY) if (!EG(no_extensions)) { SAVE_OPLINE(); - zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_statement_handler, EX(func)); + zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_statement_handler, execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } ZEND_VM_NEXT_OPCODE(); @@ -6808,7 +6808,7 @@ ZEND_VM_HANDLER(102, ZEND_EXT_FCALL_BEGIN, ANY, ANY) if (!EG(no_extensions)) { SAVE_OPLINE(); - zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_begin_handler, EX(func)); + zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_begin_handler, execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } ZEND_VM_NEXT_OPCODE(); @@ -6820,7 +6820,7 @@ ZEND_VM_HANDLER(103, ZEND_EXT_FCALL_END, ANY, ANY) if (!EG(no_extensions)) { SAVE_OPLINE(); - zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_end_handler, EX(func)); + zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_end_handler, execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } ZEND_VM_NEXT_OPCODE(); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 9a74e53e29..273b2cb555 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -1534,7 +1534,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_STMT_SPEC_HANDLER(ZEND_OPC if (!EG(no_extensions)) { SAVE_OPLINE(); - zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_statement_handler, EX(func)); + zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_statement_handler, execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } ZEND_VM_NEXT_OPCODE(); @@ -1546,7 +1546,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER(Z if (!EG(no_extensions)) { SAVE_OPLINE(); - zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_begin_handler, EX(func)); + zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_begin_handler, execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } ZEND_VM_NEXT_OPCODE(); @@ -1558,7 +1558,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_FCALL_END_SPEC_HANDLER(ZEN if (!EG(no_extensions)) { SAVE_OPLINE(); - zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_end_handler, EX(func)); + zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_end_handler, execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } ZEND_VM_NEXT_OPCODE(); |