summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xZend/tests/closure_023.phpt14
-rw-r--r--Zend/zend_closures.c1
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 {