Re: com php-src: avoid repeated strlen() usage: ext/reflection/php_reflection.c

From: Date: Sun, 14 Sep 2014 13:13:52 +0000
Subject: Re: com php-src: avoid repeated strlen() usage: ext/reflection/php_reflection.c
References: 1 2  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-81600@lists.php.net to get a copy of this message
On Sun, September 14, 2014 14:27, Nikita Popov wrote: > On Sun, Sep 14, 2014 at 12:30 PM, Anatol Belski <ab@php.net> wrote: > > >> Commit: 0b40abf41d67cacb605ea4def917428e078ca758 >> Author: Anatol Belski <ab@php.net> Sun, 14 Sep 2014 12:30:01 >> +0200 >> Parents: cbf530c7c065e8fd7009517a7ef3c81bc7e33a02 >> Branches: master >> >> >> Link: >> >> http://git.php.net/?p=php-src.git;a=commitdiff;h=0b40abf41d67cacb605ea4d >> ef917428e078ca758 >> >> Log: >> avoid repeated strlen() usage >> >> Changed paths: >> M ext/reflection/php_reflection.c >> >> >> >> Diff: >> diff --git a/ext/reflection/php_reflection.c >> b/ext/reflection/php_reflection.c index ad6a2fb..cd9f65d 100644 --- >> a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c >> @@ -1298,15 +1298,18 @@ static void >> reflection_property_factory(zend_class_entry *ce, zend_property_info zval >> classname; property_reference *reference; const char *class_name, >> *prop_name; >> + int prop_name_len; >> >> >> zend_unmangle_property_name(prop->name->val, prop->name->len, >> &class_name, &prop_name); >> >> >> + prop_name_len = (int)strlen(prop_name); >> + >> if (!(prop->flags & ZEND_ACC_PRIVATE)) { /* we have to search the class >> hierarchy for this (implicit) public or protected property */ >> zend_class_entry *tmp_ce = ce, *store_ce = ce; zend_property_info >> *tmp_info = NULL; >> >> >> - while (tmp_ce && (tmp_info = >> zend_hash_str_find_ptr(&tmp_ce->properties_info, prop_name, >> strlen(prop_name))) == NULL) { + while (tmp_ce && >> (tmp_info = >> zend_hash_str_find_ptr(&tmp_ce->properties_info, prop_name, >> prop_name_len)) == NULL) { >> ce = tmp_ce; tmp_ce = tmp_ce->parent; } >> @@ -1318,7 +1321,7 @@ static void >> reflection_property_factory(zend_class_entry *ce, zend_property_info } >> } >> >> >> - ZVAL_STRING(&name, prop_name); >> + ZVAL_STRINGL(&name, prop_name, prop_name_len); >> ZVAL_STR(&classname, zend_string_copy(prop->ce->name)); >> >> >> reflection_instantiate(reflection_property_ptr, object TSRMLS_CC); >> > > You can use zend_unmangle_property_name_ex for this. > > Thanks Nikita, fixed. Anatol

« previous php.cvs (#81600) next »