com php-src: Merge in changes from master Now also includes "on [TYPE]" in "Call to a member function" error: Zend/zend_vm_def.h Z
end/zend_vm_execute.h ext/pdo_mysql/tests/pdo_mysql _stmt_multiquery.phpt run-tests.php

From: Date: Sun, 06 Jul 2014 15:07:01 +0000
Subject: com php-src: Merge in changes from master Now also includes "on [TYPE]" in "Call to a member function" error: Zend/zend_vm_def.h Z
end/zend_vm_execute.h ext/pdo_mysql/tests/pdo_mysql _stmt_multiquery.phpt run-tests.php
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-82133@lists.php.net to get a copy of this message
Commit: a1554ca6343598c38e4fb4fbcc46419ce0bdf058 Author: Timm Friebe <thekid@thekid.de> Sun, 6 Jul 2014 17:07:01 +0200 Parents: e0d51d1cf00d43c57104764b620bb9219889a86d 5b925824edf3edc951fc41608d5cbd07a0baab08 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=a1554ca6343598c38e4fb4fbcc46419ce0bdf058 Log: Merge in changes from master Now also includes "on [TYPE]" in "Call to a member function" error Changed paths: MM Zend/zend_vm_def.h MM Zend/zend_vm_execute.h MM ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt MM run-tests.php

diff --cc Zend/zend_vm_def.h index e6db125,997946d..8cbc356 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@@ -2465,44 -2463,7 +2465,44 @@@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_C FREE_OP2(); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + FREE_OP2(); + FREE_OP1_IF_VAR(); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { diff --cc Zend/zend_vm_execute.h index 399533d,8bccee1..c104199 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@@ -9308,43 -9320,7 +9322,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -10211,43 -10185,7 +10225,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET zval_dtor(free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + zval_dtor(free_op2.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -11115,43 -11051,7 +11129,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET zval_ptr_dtor_nogc(&free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + zval_ptr_dtor_nogc(&free_op2.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -12599,43 -12497,7 +12613,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -15875,44 -15735,7 +15889,44 @@@ static int ZEND_FASTCALL ZEND_INIT_MET HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + + zval_ptr_dtor_nogc(&free_op1.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -18260,44 -18081,7 +18274,44 @@@ static int ZEND_FASTCALL ZEND_INIT_MET zval_dtor(free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + zval_dtor(free_op2.var); + zval_ptr_dtor_nogc(&free_op1.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -20606,44 -20388,7 +20620,44 @@@ static int ZEND_FASTCALL ZEND_INIT_MET zval_ptr_dtor_nogc(&free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + zval_ptr_dtor_nogc(&free_op2.var); + zval_ptr_dtor_nogc(&free_op1.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -24102,44 -23845,7 +24116,44 @@@ static int ZEND_FASTCALL ZEND_INIT_MET HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + + zval_ptr_dtor_nogc(&free_op1.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -25783,43 -25487,7 +25797,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -27229,43 -26895,7 +27243,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET zval_dtor(free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + zval_dtor(free_op2.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -28581,43 -28209,7 +28595,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET zval_ptr_dtor_nogc(&free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + zval_ptr_dtor_nogc(&free_op2.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -30361,43 -29951,7 +30375,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -33638,43 -33190,7 +33652,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -35788,43 -35302,7 +35802,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET zval_dtor(free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + zval_dtor(free_op2.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -37993,43 -37469,7 +38007,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET zval_ptr_dtor_nogc(&free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + zval_ptr_dtor_nogc(&free_op2.var); + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@@ -41199,43 -40637,7 +41213,43 @@@ static int ZEND_FASTCALL ZEND_INIT_MET HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + - zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on a non-object", function_name_strval); ++ zend_error(E_RECOVERABLE_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); + + + if (EG(exception) != NULL) { + HANDLE_EXCEPTION(); + } + + /* No exception raised: Skip over arguments until fcall opcode, return NULL */ + do { + ZEND_VM_INC_OPCODE(); + opline++; + + if (opline->opcode == ZEND_INIT_METHOD_CALL || + opline->opcode == ZEND_INIT_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME || + opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || + opline->opcode == ZEND_NEW + ) { + nested++; + } else if (opline->opcode == ZEND_DO_FCALL_BY_NAME) { + nested--; + } + } while (nested); + + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } + + if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { + ZEND_VM_INC_OPCODE(); + } + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { diff --cc ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt index 37aa903,52ecc91..a95209c --- a/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt +++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt @@@ -97,6 -97,6 +97,6 @@@ array(1) } Native Prepared Statements... - Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%SSELECT label FROM test ORDER BY id ASC LIMIT 1' at line %d in %s on line %d + Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your %s server version for the right syntax to use near '%SSELECT label FROM test ORDER BY id ASC LIMIT 1' at line %d in %s on line %d - Catchable fatal error: Call to a member function errorInfo() on a non-object in %s on line %d -Fatal error: Call to a member function errorInfo() on boolean in %s on line %d ++Catchable fatal error: Call to a member function errorInfo() on a non-object in %s on line %d
« previous php.cvs (#82133) next »