]> granicus.if.org Git - php/commitdiff
Fix aliasing issue (fixes #48409 , #48428 , #48228)
authorArnaud Le Blanc <lbarnaud@php.net>
Sat, 30 May 2009 16:30:39 +0000 (16:30 +0000)
committerArnaud Le Blanc <lbarnaud@php.net>
Sat, 30 May 2009 16:30:39 +0000 (16:30 +0000)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 48906fa0d17f78a471b4164d61faec67ea055efc..7f5e364e2d52f5bad2e8e8a2d286d191dd1ce560 100644 (file)
@@ -2362,7 +2362,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) {
@@ -4488,7 +4490,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++) {
index 8e41473d957704e43702c4ed15e51f8ff5a4bef3..742c42c828094997e26095d04150873fd4260c6a 100644 (file)
@@ -298,7 +298,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) {
@@ -644,7 +646,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++) {