Re: Use zend_string* for op_array->arg_info[].name and class_name
| From: | Levi Morrison | Date: | Fri, 28 Nov 2014 20:19:16 +0000 |
| Subject: | Re: Use zend_string* for op_array->arg_info[].name and class_name | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-79291@lists.php.net to get a copy of this message | ||
> Please review the patch
> https://gist.github.com/dstogov/47a39aff37f0a6441ea0
Instead of duplicating logic in two places I'd rather grab the
relevant data first, then do the logic once:
zend_string *class_name;
if (fe->type == ZEND_INTERNAL_FUNCTION) {
class_name = zend_string_init(
((zend_internal_arg_info*)fe_arg_info)->class_name,
strlen(((zend_internal_arg_info*)fe_arg_info)->class_name), 0
);
} else {
class_name = zend_string_dup(fe_arg_info->class_name);
}
if (!zend_string_equals_literal_ci(class_name, "parent") &&
proto->common.scope) {
fe_class_name = zend_string_copy(proto->common.scope->name);
} else if (!zend_string_equals_literal_ci(class_name, "self") &&
fe->common.scope) {
fe_class_name = zend_string_copy(fe->common.scope->name);
} else {
fe_class_name = class_name;
}
zend_string_release(class_name);