diff options
author | Dmitry Stogov <dmitry@php.net> | 2008-07-26 14:15:19 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2008-07-26 14:15:19 +0000 |
commit | 8b142365579afb27bb199c75baefd53fd454fb76 (patch) | |
tree | f63e041705164bd584b6686f12b2d53b37980f69 | |
parent | 4f81a0c358a37044f926eafdecfecedd3c6f6bf6 (diff) | |
download | php-git-8b142365579afb27bb199c75baefd53fd454fb76.tar.gz |
Fixed bug #45608 (closures don't work in static methods)
-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 { |