summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-04-14 16:52:13 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-04-14 16:52:13 +0200
commitbac5137e4ec7e64f1357d7de53764e79751b5c1a (patch)
tree6a2ffeb0d052d93111b38797f6f55dd4f20f1078 /Zend/zend_API.c
parentd0006b5fac607a10b47a407beb32cab156351e8f (diff)
downloadphp-git-bac5137e4ec7e64f1357d7de53764e79751b5c1a.tar.gz
Add zend_create_member_string() API
This is a recurring pattern.
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r--Zend/zend_API.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 1b132d64c9..6dab0d3f29 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -3102,25 +3102,13 @@ get_function_via_handler:
}
/* }}} */
-static zend_string *zend_create_method_string(zend_string *class_name, zend_string *method_name) {
- zend_string *callable_name = zend_string_alloc(
- ZSTR_LEN(class_name) + ZSTR_LEN(method_name) + sizeof("::") - 1, 0);
- char *ptr = ZSTR_VAL(callable_name);
- memcpy(ptr, ZSTR_VAL(class_name), ZSTR_LEN(class_name));
- ptr += ZSTR_LEN(class_name);
- memcpy(ptr, "::", sizeof("::") - 1);
- ptr += sizeof("::") - 1;
- memcpy(ptr, ZSTR_VAL(method_name), ZSTR_LEN(method_name) + 1);
- return callable_name;
-}
-
ZEND_API zend_string *zend_get_callable_name_ex(zval *callable, zend_object *object) /* {{{ */
{
try_again:
switch (Z_TYPE_P(callable)) {
case IS_STRING:
if (object) {
- return zend_create_method_string(object->ce->name, Z_STR_P(callable));
+ return zend_create_member_string(object->ce->name, Z_STR_P(callable));
}
return zend_string_copy(Z_STR_P(callable));
@@ -3139,9 +3127,9 @@ try_again:
}
if (Z_TYPE_P(obj) == IS_STRING) {
- return zend_create_method_string(Z_STR_P(obj), Z_STR_P(method));
+ return zend_create_member_string(Z_STR_P(obj), Z_STR_P(method));
} else if (Z_TYPE_P(obj) == IS_OBJECT) {
- return zend_create_method_string(Z_OBJCE_P(obj)->name, Z_STR_P(method));
+ return zend_create_member_string(Z_OBJCE_P(obj)->name, Z_STR_P(method));
} else {
return ZSTR_KNOWN(ZEND_STR_ARRAY_CAPITALIZED);
}