summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/closure_invoke_case_insensitive.phpt16
-rw-r--r--Zend/zend_closures.c8
2 files changed, 18 insertions, 6 deletions
diff --git a/Zend/tests/closure_invoke_case_insensitive.phpt b/Zend/tests/closure_invoke_case_insensitive.phpt
new file mode 100644
index 0000000000..d41d58a747
--- /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 55bea0b9a8..d52d0b5c25 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);
}
/* }}} */