Browse Source

Fixed bug #63428 (The behavior of execute() changed)

pull/232/head
Xinchen Hui 14 years ago
parent
commit
7bcb8780e0
  1. 4
      Zend/zend_generators.c
  2. 11
      Zend/zend_vm_execute.h
  3. 11
      Zend/zend_vm_execute.skl

4
Zend/zend_generators.c

@ -461,6 +461,10 @@ static zend_function *zend_generator_get_constructor(zval *object TSRMLS_DC) /*
void zend_generator_resume(zend_generator *generator TSRMLS_DC) /* {{{ */
{
if (EG(exception)) {
return;
}
/* The generator is already closed, thus can't resume */
if (!generator->execute_data) {
return;

11
Zend/zend_vm_execute.h

@ -419,10 +419,6 @@ ZEND_API void execute_ex(zend_execute_data *execute_data TSRMLS_DC)
if (EG(exception)) {
return;
}
original_in_execution = EG(in_execution);
EG(in_execution) = 1;
@ -459,9 +455,10 @@ ZEND_API void execute_ex(zend_execute_data *execute_data TSRMLS_DC)
ZEND_API void execute(zend_op_array *op_array TSRMLS_DC)
{
zend_execute_data *execute_data = zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC);
execute_ex(execute_data TSRMLS_CC);
if (EG(exception)) {
return;
}
execute_ex(zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC) TSRMLS_CC);
}
static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)

11
Zend/zend_vm_execute.skl

@ -82,10 +82,6 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data *execute_data TSRMLS_DC)
{%INTERNAL_LABELS%}
if (EG(exception)) {
return;
}
original_in_execution = EG(in_execution);
EG(in_execution) = 1;
@ -110,9 +106,10 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data *execute_data TSRMLS_DC)
ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
{
zend_execute_data *execute_data = zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC);
{%EXECUTOR_NAME%}_ex(execute_data TSRMLS_CC);
if (EG(exception)) {
return;
}
{%EXECUTOR_NAME%}_ex(zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC) TSRMLS_CC);
}
{%EXTERNAL_EXECUTOR%}

Loading…
Cancel
Save