diff options
author | Felipe Pena <felipe@php.net> | 2009-11-11 18:59:37 +0000 |
---|---|---|
committer | Felipe Pena <felipe@php.net> | 2009-11-11 18:59:37 +0000 |
commit | fc9c17690de92fe9b1ad820f8293b71c01009f57 (patch) | |
tree | eaa53c1bde0d6cf0d6ea6642416c8e892041253e | |
parent | e6770f10a046679b9545de43c691fcfce7e67f67 (diff) | |
download | php-git-fc9c17690de92fe9b1ad820f8293b71c01009f57.tar.gz |
- Fixed bug #50146 (property_exists: Closure object cannot have properties)
-rw-r--r-- | Zend/tests/bug50146.phpt | 20 | ||||
-rw-r--r-- | Zend/zend_closures.c | 4 |
2 files changed, 23 insertions, 1 deletions
diff --git a/Zend/tests/bug50146.phpt b/Zend/tests/bug50146.phpt new file mode 100644 index 0000000000..7aa26a6509 --- /dev/null +++ b/Zend/tests/bug50146.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #50146 (property_exists: Closure object cannot have properties) +--FILE-- +<?php + +$obj = function(){}; + +var_dump(property_exists($obj,'foo')); + +$ref = new ReflectionObject($obj); +var_dump($ref->hasProperty('b')); + +var_dump(isset($obj->a)); + +?> +--EXPECTF-- +bool(false) +bool(false) + +Catchable fatal error: Closure object cannot have properties in %s on line %d diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index 84425ba99d..6caca0f5f8 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -161,7 +161,9 @@ static zval **zend_closure_get_property_ptr_ptr(zval *object, zval *member TSRML static int zend_closure_has_property(zval *object, zval *member, int has_set_exists TSRMLS_DC) /* {{{ */ { - ZEND_CLOSURE_PROPERTY_ERROR(); + if (has_set_exists != 2) { + ZEND_CLOSURE_PROPERTY_ERROR(); + } return 0; } /* }}} */ |