]> granicus.if.org Git - php/commitdiff
Fixed possible crash because of overriden error handler
authorDmitry Stogov <dmitry@php.net>
Wed, 17 Sep 2008 13:10:08 +0000 (13:10 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 17 Sep 2008 13:10:08 +0000 (13:10 +0000)
Zend/tests/closure_031.phpt [new file with mode: 0644]
Zend/zend_closures.c

diff --git a/Zend/tests/closure_031.phpt b/Zend/tests/closure_031.phpt
new file mode 100644 (file)
index 0000000..dace4a4
--- /dev/null
@@ -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
+
index d4a80719bb5b653043b9ec8b807b1d2dc53c951f..7ada6274c08f462d94a795e7c15375041d23da96 100644 (file)
@@ -140,7 +140,8 @@ static zend_function *zend_closure_get_method(zval **object_ptr, zstr method_nam
 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);
 }
 /* }}} */