summaryrefslogtreecommitdiff
path: root/ext/spl/php_spl.c
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2013-07-21 22:47:10 -0700
committerStanislav Malyshev <stas@php.net>2013-07-21 22:47:10 -0700
commit83ced9124ea0f7be4950b8267b518b05c70323fe (patch)
treee1d9661f835022cfb79d4c7816ef8dcb5466b18c /ext/spl/php_spl.c
parent476924ec3dbc3e500dc14576e3375f03d8e8f824 (diff)
downloadphp-git-83ced9124ea0f7be4950b8267b518b05c70323fe.tar.gz
Fix bug #61697 - spl_autoload_functions returns lambda functions incorrectly
Diffstat (limited to 'ext/spl/php_spl.c')
-rw-r--r--ext/spl/php_spl.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index 35f4e5056b..c3a774ea96 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);
}