com php-src: Fix __invoke comparison in closure_get _method: Zend/tests/closure_invoke_case_insensitive .phpt Zend/zend_closures.c

From: Date: Wed, 30 Mar 2016 16:32:00 +0000
Subject: com php-src: Fix __invoke comparison in closure_get _method: Zend/tests/closure_invoke_case_insensitive .phpt Zend/zend_closures.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-91553@lists.php.net to get a copy of this message
Commit: f95679885ff9a7258f0a91b9d83d73a7ee7e6f91 Author: Nikita Popov <nikic@php.net> Wed, 30 Mar 2016 18:31:10 +0200 Parents: 3bfe1c55ae72f6f2c1cccc641e46f26114376ecd Branches: PHP-7.0 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=f95679885ff9a7258f0a91b9d83d73a7ee7e6f91 Log: Fix __invoke comparison in closure_get_method It compared against the wrong variable. Fixed this by getting rid of lc_name entirely and use equals_literal_ci instead. Changed paths: A Zend/tests/closure_invoke_case_insensitive.phpt M Zend/zend_closures.c Diff: diff --git a/Zend/tests/closure_invoke_case_insensitive.phpt b/Zend/tests/closure_invoke_case_insensitive.phpt new file mode 100644 index 0000000..d41d58a --- /dev/null +++ b/Zend/tests/closure_invoke_case_insensitive.phpt @@ -0,0 +1,16 @@ +--TEST-- +Closure::__invoke() is case insensitive +--FILE-- +<?php + +$inc = function(&$n) { + $n++; +}; + +$n = 1; +$inc->__INVOKE($n); +var_dump($n); + +?> +--EXPECT-- +int(2) diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index 9b4fb11..def114c4 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -297,14 +297,10 @@ ZEND_API zval* zend_get_closure_this_ptr(zval *obj) /* {{{ */ static zend_function *zend_closure_get_method(zend_object **object, zend_string *method, const zval *key) /* {{{ */ { - zend_string *lc_name; - - lc_name = zend_string_tolower(method); - if (zend_string_equals_literal(method, ZEND_INVOKE_FUNC_NAME)) { - zend_string_release(lc_name); + if (zend_string_equals_literal_ci(method, ZEND_INVOKE_FUNC_NAME)) { return zend_get_closure_invoke_method(*object); } - zend_string_release(lc_name); + return std_object_handlers.get_method(object, method, key); } /* }}} */

« previous php.cvs (#91553) next »