Browse Source

MFH: Fix aliasing issue (fixes #48409 , #48428 , #48228)

experimental/5.3-FPM
Arnaud Le Blanc 17 years ago
parent
commit
bed00e15d1
  1. 7
      Zend/zend_vm_def.h
  2. 7
      Zend/zend_vm_execute.h

7
Zend/zend_vm_def.h

@ -2288,7 +2288,9 @@ ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY)
EG(called_scope) = EX(called_scope);
}
zend_ptr_stack_3_pop(&EG(arg_types_stack), (void*)&EX(called_scope), (void**)&EX(current_object), (void**)&EX(fbc));
EX(called_scope) = zend_ptr_stack_pop(&EG(arg_types_stack));
EX(current_object) = zend_ptr_stack_pop(&EG(arg_types_stack));
EX(fbc) = zend_ptr_stack_pop(&EG(arg_types_stack));
EX(function_state).arguments = zend_vm_stack_push_args(opline->extended_value TSRMLS_CC);
if (EX(function_state).function->type == ZEND_INTERNAL_FUNCTION) {
@ -4296,7 +4298,8 @@ ZEND_VM_HANDLER(149, ZEND_HANDLE_EXCEPTION, ANY, ANY)
zval_ptr_dtor(&EX(object));
}
EX(called_scope) = DECODE_CTOR(EX(called_scope));
zend_ptr_stack_2_pop(&EG(arg_types_stack), (void**)&EX(object), (void**)&EX(fbc));
EX(object) = zend_ptr_stack_pop(&EG(arg_types_stack));
EX(fbc) = zend_ptr_stack_pop(&EG(arg_types_stack));
}
for (i=0; i<EX(op_array)->last_brk_cont; i++) {

7
Zend/zend_vm_execute.h

@ -290,7 +290,9 @@ static int ZEND_FASTCALL zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_AR
EG(called_scope) = EX(called_scope);
}
zend_ptr_stack_3_pop(&EG(arg_types_stack), (void*)&EX(called_scope), (void**)&EX(current_object), (void**)&EX(fbc));
EX(called_scope) = zend_ptr_stack_pop(&EG(arg_types_stack));
EX(current_object) = zend_ptr_stack_pop(&EG(arg_types_stack));
EX(fbc) = zend_ptr_stack_pop(&EG(arg_types_stack));
EX(function_state).arguments = zend_vm_stack_push_args(opline->extended_value TSRMLS_CC);
if (EX(function_state).function->type == ZEND_INTERNAL_FUNCTION) {
@ -636,7 +638,8 @@ static int ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER
zval_ptr_dtor(&EX(object));
}
EX(called_scope) = DECODE_CTOR(EX(called_scope));
zend_ptr_stack_2_pop(&EG(arg_types_stack), (void**)&EX(object), (void**)&EX(fbc));
EX(object) = zend_ptr_stack_pop(&EG(arg_types_stack));
EX(fbc) = zend_ptr_stack_pop(&EG(arg_types_stack));
}
for (i=0; i<EX(op_array)->last_brk_cont; i++) {

Loading…
Cancel
Save