diff options
| author | Ilia Alshanetsky <iliaa@php.net> | 2005-03-06 19:36:51 +0000 |
|---|---|---|
| committer | Ilia Alshanetsky <iliaa@php.net> | 2005-03-06 19:36:51 +0000 |
| commit | 96d7eebce83ab8893e82426335418fc7174e57a7 (patch) | |
| tree | a3f97a27ec53655ee576b7c74d66b81327ceeed1 /ext/standard/html.c | |
| parent | 6d6e939f9b49d98b735ac6ed6bcf721ac32b8a27 (diff) | |
| download | php-git-96d7eebce83ab8893e82426335418fc7174e57a7.tar.gz | |
Make html_entity_decode() 15-20% faster by avoiding pointless string
duplication.
Diffstat (limited to 'ext/standard/html.c')
| -rw-r--r-- | ext/standard/html.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/ext/standard/html.c b/ext/standard/html.c index 0b5d7c2235..e1ac9188bc 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -940,9 +940,11 @@ PHPAPI char *php_unescape_html_entities(unsigned char *old, int oldlen, int *new return 0; } - replaced = php_str_to_str(ret, retlen, entity, entity_length, replacement, replacement_len, &retlen); - efree(ret); - ret = replaced; + if (php_memnstr(ret, entity, entity_length, ret+retlen)) { + replaced = php_str_to_str(ret, retlen, entity, entity_length, replacement, replacement_len, &retlen); + efree(ret); + ret = replaced; + } } } } @@ -954,10 +956,12 @@ PHPAPI char *php_unescape_html_entities(unsigned char *old, int oldlen, int *new replacement[0] = (unsigned char)basic_entities[j].charcode; replacement[1] = '\0'; - - replaced = php_str_to_str(ret, retlen, basic_entities[j].entity, basic_entities[j].entitylen, replacement, 1, &retlen); - efree(ret); - ret = replaced; + + if (php_memnstr(ret, basic_entities[j].entity, basic_entities[j].entitylen, ret+retlen)) { + replaced = php_str_to_str(ret, retlen, basic_entities[j].entity, basic_entities[j].entitylen, replacement, 1, &retlen); + efree(ret); + ret = replaced; + } } /* replace numeric entities & "&" */ |
