summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Jones <sixd@php.net>2013-09-30 15:54:34 -0700
committerChristopher Jones <sixd@php.net>2013-09-30 15:54:34 -0700
commit679bf479b63356f977c0bb04b5650b86cd4e15a1 (patch)
tree5761e4106c7d1860559fe0e86c15ce7e644bf128
parent7e35004e398a4971d30716a657aaef7561e6f7bf (diff)
parent2b78edfba25afac8f34ca65e18f98d23a4b8bcce (diff)
downloadphp-git-679bf479b63356f977c0bb04b5650b86cd4e15a1.tar.gz
Merge branch 'PHP-5.4' of https://git.php.net/repository/php-src into PHP-5.4
# By Michael Wallner (2) and others # Via Michael Wallner * 'PHP-5.4' of https://git.php.net/repository/php-src: fix test fix memleak on resetting rebind_proc Fix bug #65322: compile time errors won't trigger auto loading 5.4.20 release date
-rw-r--r--NEWS5
-rw-r--r--Zend/tests/bug65322.phpt22
-rw-r--r--Zend/tests/errmsg_045.phpt18
-rw-r--r--Zend/zend.c4
-rw-r--r--ext/ldap/ldap.c1
-rw-r--r--ext/ldap/tests/ldap_search_variation6.phpt20
6 files changed, 64 insertions, 6 deletions
diff --git a/NEWS b/NEWS
index e17632543c..4dc7ef7c18 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2013, PHP 5.4.21
+- Core:
+ . Fixed bug #65322 (compile time errors won't trigger auto loading). (Nikita)
+
- CLI server:
. Fixed bug #65633 (built-in server treat some http headers as
case-sensitive). (Adam)
@@ -23,7 +26,7 @@ PHP NEWS
. Fixed bug #65721 (configure script broken in 5.5.4 and 5.4.20 when enabling
imap). (ryotakatsuki at gmail dot com)
-?? ??? 2013, PHP 5.4.20
+19 Sep 2013, PHP 5.4.20
- Core:
. Fixed bug #60598 (cli/apache sapi segfault on objects manipulation).
diff --git a/Zend/tests/bug65322.phpt b/Zend/tests/bug65322.phpt
new file mode 100644
index 0000000000..aab163d915
--- /dev/null
+++ b/Zend/tests/bug65322.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #65322: compile time errors won't trigger auto loading
+--FILE--
+<?php
+
+spl_autoload_register(function($class) {
+ var_dump($class);
+ class B {}
+});
+
+set_error_handler(function($_, $msg, $file) {
+ var_dump($msg, $file);
+ new B;
+});
+
+eval('class A { function a() {} function __construct() {} }');
+
+?>
+--EXPECTF--
+string(50) "Redefining already defined constructor for class A"
+string(%d) "%s(%d) : eval()'d code"
+string(1) "B"
diff --git a/Zend/tests/errmsg_045.phpt b/Zend/tests/errmsg_045.phpt
new file mode 100644
index 0000000000..b27f67ade4
--- /dev/null
+++ b/Zend/tests/errmsg_045.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Error message in error handler during compilation
+--FILE--
+<?php
+
+set_error_handler(function($_, $msg, $file) {
+ var_dump($msg, $file);
+ echo $undefined;
+});
+
+eval('class A { function a() {} function __construct() {} }');
+
+?>
+--EXPECTF--
+string(50) "Redefining already defined constructor for class A"
+string(%d) "%s(%d) : eval()'d code"
+
+Notice: Undefined variable: undefined in %s on line %d
diff --git a/Zend/zend.c b/Zend/zend.c
index 162922866b..0602c45042 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -1183,7 +1183,7 @@ ZEND_API void zend_error(int type, const char *format, ...) /* {{{ */
* such scripts recursivly, but some CG() variables may be
* inconsistent. */
- in_compilation = zend_is_compiling(TSRMLS_C);
+ in_compilation = CG(in_compilation);
if (in_compilation) {
saved_class_entry = CG(active_class_entry);
CG(active_class_entry) = NULL;
@@ -1195,6 +1195,7 @@ ZEND_API void zend_error(int type, const char *format, ...) /* {{{ */
SAVE_STACK(declare_stack);
SAVE_STACK(list_stack);
SAVE_STACK(context_stack);
+ CG(in_compilation) = 0;
}
if (call_user_function_ex(CG(function_table), NULL, orig_user_error_handler, &retval, 5, params, 1, NULL TSRMLS_CC) == SUCCESS) {
@@ -1219,6 +1220,7 @@ ZEND_API void zend_error(int type, const char *format, ...) /* {{{ */
RESTORE_STACK(declare_stack);
RESTORE_STACK(list_stack);
RESTORE_STACK(context_stack);
+ CG(in_compilation) = 1;
}
if (!EG(user_error_handler)) {
diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c
index 3cfa2092e7..71d57d6d9b 100644
--- a/ext/ldap/ldap.c
+++ b/ext/ldap/ldap.c
@@ -2107,6 +2107,7 @@ PHP_FUNCTION(ldap_set_rebind_proc)
/* unregister rebind procedure */
if (ld->rebindproc != NULL) {
zval_dtor(ld->rebindproc);
+ FREE_ZVAL(ld->rebindproc);
ld->rebindproc = NULL;
ldap_set_rebind_proc(ld->link, NULL, NULL);
}
diff --git a/ext/ldap/tests/ldap_search_variation6.phpt b/ext/ldap/tests/ldap_search_variation6.phpt
index a29e4524df..5139ebb77d 100644
--- a/ext/ldap/tests/ldap_search_variation6.phpt
+++ b/ext/ldap/tests/ldap_search_variation6.phpt
@@ -217,14 +217,26 @@ array(2) {
[1]=>
resource(%d) of type (ldap result)
}
-NULL
-NULL
+array(1) {
+ ["count"]=>
+ int(0)
+}
+array(1) {
+ ["count"]=>
+ int(0)
+}
array(2) {
[0]=>
resource(%d) of type (ldap result)
[1]=>
resource(%d) of type (ldap result)
}
-NULL
-NULL
+array(1) {
+ ["count"]=>
+ int(0)
+}
+array(1) {
+ ["count"]=>
+ int(0)
+}
===DONE===