cvs: ZendEngine2 / zend_closures.c /tests closure_031.phpt
[email protected] ("Dmitry Stogov")
| Newsgroups | php.zend-engine.cvs |
|---|---|
| Message-ID | <cvsdmitry1221657008@cvsserver> |
dmitry Wed Sep 17 13:10:08 2008 UTC
Modified files:
/ZendEngine2 zend_closures.c
/ZendEngine2/tests closure_031.phpt
Log:
Fixed possible crash because of overriden error handler
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_closures.c?r1=1.13&r2=1.14&diff_format=u
Index: ZendEngine2/zend_closures.c
diff -u ZendEngine2/zend_closures.c:1.13 ZendEngine2/zend_closures.c:1.14
--- ZendEngine2/zend_closures.c:1.13 Thu Aug 14 21:26:05 2008
+++ ZendEngine2/zend_closures.c Wed Sep 17 13:10:08 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_closures.c,v 1.13 2008/08/14 21:26:05 colder Exp $ */
+/* $Id: zend_closures.c,v 1.14 2008/09/17 13:10:08 dmitry Exp $ */
#include "zend.h"
#include "zend_API.h"
@@ -140,7 +140,8 @@
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);
}
/* }}} */
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/closure_031.phpt?r1=1.1&r2=1.2&diff_format=u
Index: ZendEngine2/tests/closure_031.phpt
diff -u /dev/null ZendEngine2/tests/closure_031.phpt:1.2
--- /dev/null Wed Sep 17 13:10:08 2008
+++ ZendEngine2/tests/closure_031.phpt Wed Sep 17 13:10:08 2008
@@ -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
+