diff options
author | Stanislav Malyshev <stas@php.net> | 2013-07-21 22:47:10 -0700 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2013-07-21 22:47:10 -0700 |
commit | 83ced9124ea0f7be4950b8267b518b05c70323fe (patch) | |
tree | e1d9661f835022cfb79d4c7816ef8dcb5466b18c /ext/spl/php_spl.c | |
parent | 476924ec3dbc3e500dc14576e3375f03d8e8f824 (diff) | |
download | php-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.c | 13 |
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); } |