diff options
| author | Anatol Belski <ab@php.net> | 2014-11-27 15:59:43 +0100 | 
|---|---|---|
| committer | Anatol Belski <ab@php.net> | 2014-11-27 15:59:43 +0100 | 
| commit | 864cd82acef03b75b994f3fd98d9b4a51a99204a (patch) | |
| tree | 4edfbcc6ce5d2f6fa6da9908503119c70ad868b5 /Zend/zend_execute.c | |
| parent | 81a24f054b934ccb1be77049dd9c244283efcba7 (diff) | |
| parent | 4dcc8a63715b1bb42518e9c217ea493007016932 (diff) | |
| download | php-git-864cd82acef03b75b994f3fd98d9b4a51a99204a.tar.gz | |
Merge remote-tracking branch 'origin/master' into native-tls
* origin/master:
  updated NEWS
  refactored the mbstring config.w32
  Update NEWS
  Fixed compilation warnings
  Fixed bug #68504 --with-libmbfl configure option not present on Windows
  Changed "finally" handling. Removed EX(fast_ret) and EX(delayed_exception). Allocate and use additional IS_TMP_VAR slot on VM stack instead.
  the darwin specific test fails for me with the same output which is the expected for the original test I couldn't find anybody who managed to see this test passing, but I found a bunch of other reports on qa.php.net/reports and on google which do see this test failing on mac. if this change causes you to have this test failing on Mac, please drop me a mail so we can improve the current test so it passes for everybody.
  #68446 is fixed
  Reimplemented silence operator (@) handling on exceptions. Now each silence region is stored in op_array->brk_cont_array. On exception ZEND_HANDLE_EXCEPTION handler traverse this array and restore original EG(error_reporting) if exception occured inside a "silence" region.
  remove the NEWS entries for the reverted stuff
  typo fix
  go back with phpdbg to the state of 5.6.3, reverting the controversial commits(remote debugging/xml protocol)
  5.5.21 now
  New label length test
  Fix ext/filter/tests/033.phpt
  Fix filter_list test
  FILTER_VALIDATE_DOMAIN and RFC conformance for FILTER_VALIDATE_URL
Conflicts:
	ext/mbstring/config.w32
Diffstat (limited to 'Zend/zend_execute.c')
| -rw-r--r-- | Zend/zend_execute.c | 30 | 
1 files changed, 14 insertions, 16 deletions
| diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 6c8ebca707..2fbd1d5011 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -558,20 +558,24 @@ ZEND_API void zend_verify_arg_error(int error_type, const zend_function *zf, uin  		fclass = "";  	} -	if (arg && zf->common.type == ZEND_USER_FUNCTION) { -		ZVAL_COPY_VALUE(&old_arg, arg); -		ZVAL_UNDEF(arg); -	} +	if (zf->common.type == ZEND_USER_FUNCTION) { +		if (arg) { +			ZVAL_COPY_VALUE(&old_arg, arg); +			ZVAL_UNDEF(arg); +		} -	if (zf->common.type == ZEND_USER_FUNCTION && ptr && ptr->func && ZEND_USER_CODE(ptr->func->common.type)) { -		zend_error(error_type, "Argument %d passed to %s%s%s() must %s%s, %s%s given, called in %s on line %d and defined", arg_num, fclass, fsep, fname, need_msg, need_kind, given_msg, given_kind, ptr->func->op_array.filename->val, ptr->opline->lineno); +		if (ptr && ptr->func && ZEND_USER_CODE(ptr->func->common.type)) { +			zend_error(error_type, "Argument %d passed to %s%s%s() must %s%s, %s%s given, called in %s on line %d and defined", arg_num, fclass, fsep, fname, need_msg, need_kind, given_msg, given_kind, ptr->func->op_array.filename->val, ptr->opline->lineno); +		} else { +			zend_error(error_type, "Argument %d passed to %s%s%s() must %s%s, %s%s given", arg_num, fclass, fsep, fname, need_msg, need_kind, given_msg, given_kind); +		} + +		if (arg) { +			ZVAL_COPY_VALUE(arg, &old_arg); +		}  	} else {  		zend_error(error_type, "Argument %d passed to %s%s%s() must %s%s, %s%s given", arg_num, fclass, fsep, fname, need_msg, need_kind, given_msg, given_kind);  	} - -	if (arg && zf->common.type == ZEND_USER_FUNCTION) { -		ZVAL_COPY_VALUE(arg, &old_arg); -	}  }  static int is_null_constant(zval *default_value TSRMLS_DC) @@ -1485,8 +1489,6 @@ static zend_always_inline void i_init_func_execute_data(zend_execute_data *execu  	EX(opline) = op_array->opcodes;  	EX(call) = NULL;  	EX(return_value) = return_value; -	EX(delayed_exception) = NULL; -	EX(silence_op_num) = -1;  	/* Handle arguments */  	first_extra_arg = op_array->num_args; @@ -1552,8 +1554,6 @@ static zend_always_inline void i_init_code_execute_data(zend_execute_data *execu  	EX(call) = NULL;  	EX(return_value) = return_value;  	EX(scope) = EG(scope); -	EX(delayed_exception) = NULL; -	EX(silence_op_num) = -1;  	zend_attach_symbol_table(execute_data); @@ -1579,8 +1579,6 @@ static zend_always_inline void i_init_execute_data(zend_execute_data *execute_da  	EX(call) = NULL;  	EX(return_value) = return_value;  	EX(scope) = EG(scope); -	EX(delayed_exception) = NULL; -	EX(silence_op_num) = -1;  	if (UNEXPECTED(EX(symbol_table) != NULL)) {  		zend_attach_symbol_table(execute_data); | 
