Skip to content

Commit 0b8ad94

Browse files
committed
Refactor _xml_add_to_info()
Mark char* as const, and compute it's length once to save an expensive strlen() call
1 parent 5b8f379 commit 0b8ad94

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

ext/xml/xml.c

+5-4
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ inline static char xml_decode_us_ascii(unsigned short);
156156
static void xml_call_handler(xml_parser *, zval *, zend_function *, int, zval *, zval *);
157157
static void _xml_xmlchar_zval(const XML_Char *, int, const XML_Char *, zval *);
158158
static int _xml_xmlcharlen(const XML_Char *);
159-
static void _xml_add_to_info(xml_parser *parser,char *name);
159+
static void _xml_add_to_info(xml_parser *parser, const char *name);
160160
inline static zend_string *_xml_decode_tag(xml_parser *parser, const char *tag);
161161

162162
void _xml_startElementHandler(void *, const XML_Char *, const XML_Char **);
@@ -548,18 +548,19 @@ static int _xml_xmlcharlen(const XML_Char *s)
548548
/* }}} */
549549

550550
/* {{{ _xml_add_to_info() */
551-
static void _xml_add_to_info(xml_parser *parser,char *name)
551+
static void _xml_add_to_info(xml_parser *parser, const char *name)
552552
{
553553
zval *element;
554554

555555
if (Z_ISUNDEF(parser->info)) {
556556
return;
557557
}
558558

559-
if ((element = zend_hash_str_find(Z_ARRVAL(parser->info), name, strlen(name))) == NULL) {
559+
size_t name_len = strlen(name);
560+
if ((element = zend_hash_str_find(Z_ARRVAL(parser->info), name, name_len)) == NULL) {
560561
zval values;
561562
array_init(&values);
562-
element = zend_hash_str_update(Z_ARRVAL(parser->info), name, strlen(name), &values);
563+
element = zend_hash_str_update(Z_ARRVAL(parser->info), name, name_len, &values);
563564
}
564565

565566
add_next_index_long(element, parser->curtag);

0 commit comments

Comments
 (0)