diff options
| author | Dmitry Stogov <dmitry@php.net> | 2008-09-17 13:08:54 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2008-09-17 13:08:54 +0000 |
| commit | df9b7a1fe063214f48dffbd583248da8df95228e (patch) | |
| tree | 9ca9565d6a6e876b19730aed3698bb9ba6674825 | |
| parent | fcc0fdd125fdb9e1713f91d027fe07d680a0cf36 (diff) | |
| download | php-git-df9b7a1fe063214f48dffbd583248da8df95228e.tar.gz | |
Fixed possible crash because of overriden error handler
| -rw-r--r-- | Zend/tests/closure_031.phpt | 16 | ||||
| -rw-r--r-- | Zend/zend_closures.c | 3 |
2 files changed, 18 insertions, 1 deletions
diff --git a/Zend/tests/closure_031.phpt b/Zend/tests/closure_031.phpt new file mode 100644 index 0000000000..dace4a4e73 --- /dev/null +++ b/Zend/tests/closure_031.phpt @@ -0,0 +1,16 @@ +--TEST-- +Closure 031: Closure properties with custom error handlers +--FILE-- +<?php +function foo($errno, $errstr, $errfile, $errline) { + echo "Error: $errstr\n"; +} +set_error_handler('foo'); +$foo = function() { +}; +var_dump($foo->a); +?> +--EXPECT-- +Error: Closure object cannot have properties +NULL + diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index f0fba8e174..69b964aba9 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -136,7 +136,8 @@ static zend_function *zend_closure_get_method(zval **object_ptr, char *method_na static zval *zend_closure_read_property(zval *object, zval *member, int type TSRMLS_DC) /* {{{ */ { ZEND_CLOSURE_PROPERTY_ERROR(); - return NULL; + Z_ADDREF(EG(uninitialized_zval)); + return &EG(uninitialized_zval); } /* }}} */ |
