summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2016-04-20 18:37:23 +0200
committerNikita Popov <nikic@php.net>2016-04-20 18:38:40 +0200
commit77bb96d7c95ddfdba8b16325db439913ee58522f (patch)
tree865037861c5f899bb5cbc997d606c70f1eb8ce33 /Zend/zend_compile.c
parentede06b7e20b860c70ff446fdb2bc26decbef79de (diff)
downloadphp-git-77bb96d7c95ddfdba8b16325db439913ee58522f.tar.gz
Fix bug #71737
Also improve the error message for $this used in parameters.
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r--Zend/zend_compile.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 13e774eaba..89fd0e520e 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -4484,8 +4484,9 @@ void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast) /* {{{ */
zend_error_noreturn(E_COMPILE_ERROR, "Redefinition of parameter $%s",
ZSTR_VAL(name));
} else if (zend_string_equals_literal(name, "this")) {
- if (op_array->scope && (op_array->fn_flags & ZEND_ACC_STATIC) == 0) {
- zend_error_noreturn(E_COMPILE_ERROR, "Cannot re-assign $this");
+ if ((op_array->scope || (op_array->fn_flags & ZEND_ACC_CLOSURE))
+ && (op_array->fn_flags & ZEND_ACC_STATIC) == 0) {
+ zend_error_noreturn(E_COMPILE_ERROR, "Cannot use $this as parameter");
}
op_array->this_var = var_node.u.op.var;
}