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
+
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.