diff --git a/NEWS b/NEWS index 540daf24d0f..18bb2fd013f 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,8 @@ PHP NEWS - SPL: . Added RecursiveTreeIterator setPostfix and getPostifx methods. (Joshua Thijssen) + . Fixed bug #61697 (spl_autoload_functions returns lambda functions + incorrectly). (Laruence) - Streams: . Fixed bug #65268 (select() implementation uses outdated tick API). (Anatol) diff --git a/UPGRADING b/UPGRADING index 741bcd9683e..14e19aa5835 100755 --- a/UPGRADING +++ b/UPGRADING @@ -179,6 +179,9 @@ PHP 5.5 UPGRADE NOTES - Functions in the socket extension now do not emit warnings when the errno is EAGAIN, EWOULDBLOCK or EINPROGRESS. +- Since 5.5.2, spl_autoload_functions() returns different names for + different lambda functions registered via spl_autoload_register(). + ======================================== 5. New Functions ======================================== diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index 35f4e5056bb..c3a774ea96d 100644 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -743,8 +743,17 @@ PHP_FUNCTION(spl_autoload_functions) } add_next_index_string(tmp, alfi->func_ptr->common.function_name, 1); add_next_index_zval(return_value, tmp); - } else - add_next_index_string(return_value, alfi->func_ptr->common.function_name, 1); + } else { + if (strncmp(alfi->func_ptr->common.function_name, ZEND_STRL("__lambda_func"))) { + add_next_index_string(return_value, alfi->func_ptr->common.function_name, 1); + } else { + char *key; + uint len; + long dummy; + zend_hash_get_current_key_ex(SPL_G(autoload_functions), &key, &len, &dummy, 0, &function_pos); + add_next_index_stringl(return_value, key, len - 1, 1); + } + } zend_hash_move_forward_ex(SPL_G(autoload_functions), &function_pos); } diff --git a/ext/spl/tests/bug61697.phpt b/ext/spl/tests/bug61697.phpt index d95caef9785..064aaa2e2bf 100644 --- a/ext/spl/tests/bug61697.phpt +++ b/ext/spl/tests/bug61697.phpt @@ -1,7 +1,5 @@ --TEST-- Bug #61697 (spl_autoload_functions returns lambda functions incorrectly) ---XFAIL-- -Bug #61697 not fixed yet --FILE--