Skip to content

Commit

Permalink
Refactor _xml_add_to_info()
Browse files Browse the repository at this point in the history
Mark char* as const, and compute it's length once to save an expensive strlen() call
  • Loading branch information
Girgias committed Sep 13, 2022
1 parent 5b8f379 commit 0b8ad94
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions ext/xml/xml.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ inline static char xml_decode_us_ascii(unsigned short);
static void xml_call_handler(xml_parser *, zval *, zend_function *, int, zval *, zval *);
static void _xml_xmlchar_zval(const XML_Char *, int, const XML_Char *, zval *);
static int _xml_xmlcharlen(const XML_Char *);
static void _xml_add_to_info(xml_parser *parser,char *name);
static void _xml_add_to_info(xml_parser *parser, const char *name);
inline static zend_string *_xml_decode_tag(xml_parser *parser, const char *tag);

void _xml_startElementHandler(void *, const XML_Char *, const XML_Char **);
Expand Down Expand Up @@ -548,18 +548,19 @@ static int _xml_xmlcharlen(const XML_Char *s)
/* }}} */

/* {{{ _xml_add_to_info() */
static void _xml_add_to_info(xml_parser *parser,char *name)
static void _xml_add_to_info(xml_parser *parser, const char *name)
{
zval *element;

if (Z_ISUNDEF(parser->info)) {
return;
}

if ((element = zend_hash_str_find(Z_ARRVAL(parser->info), name, strlen(name))) == NULL) {
size_t name_len = strlen(name);
if ((element = zend_hash_str_find(Z_ARRVAL(parser->info), name, name_len)) == NULL) {
zval values;
array_init(&values);
element = zend_hash_str_update(Z_ARRVAL(parser->info), name, strlen(name), &values);
element = zend_hash_str_update(Z_ARRVAL(parser->info), name, name_len, &values);
}

add_next_index_long(element, parser->curtag);
Expand Down

0 comments on commit 0b8ad94

Please sign in to comment.