diff options
-rwxr-xr-x | Zend/tests/closure_023.phpt | 14 | ||||
-rw-r--r-- | Zend/zend_closures.c | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/Zend/tests/closure_023.phpt b/Zend/tests/closure_023.phpt new file mode 100755 index 0000000000..634fb6dd50 --- /dev/null +++ b/Zend/tests/closure_023.phpt @@ -0,0 +1,14 @@ +--TEST-- +Closure 023: Closure declared in statically called method +--FILE-- +<?php +class foo { + public static function bar() { + $func = function() { echo "Done"; }; + $func(); + } +} +foo::bar(); +--EXPECT-- +Done + diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index c534c8838a..2b5d1029d5 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -296,6 +296,7 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func, zend_class_ent closure->this_ptr = this_ptr; Z_ADDREF_P(this_ptr); } else { + closure->func.common.fn_flags |= ZEND_ACC_STATIC; closure->this_ptr = NULL; } } else { |