From dabfe6db7cc09dff8b95504f13913786f66a65df Mon Sep 17 00:00:00 2001 From: Ryu Sawada Date: Mon, 26 Feb 2007 13:49:17 +0000 Subject: [PATCH] merged with mxml in ROME. * increased size of a string buffer. (ROME rev.1341) * performance improvement of parse_entity (ROME rev.1609) --- mxml.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mxml.c b/mxml.c index 995b59a..509bdee 100755 --- a/mxml.c +++ b/mxml.c @@ -423,7 +423,7 @@ int mxml_end_element(MXML_WRITER *writer) */ int mxml_write_attribute(MXML_WRITER *writer, const char *name, const char *value) { - char name_enc[1000], val_enc[1000], line[2000]; + char name_enc[4096], val_enc[4096], line[8192]; if (!writer->element_is_open) return FALSE; @@ -1547,6 +1547,8 @@ int mxml_parse_entity(char **buf, const char *file_name, char *error, int error_ int ip; /* counter for entity value */ char directoryname[FILENAME_MAX]; char filename[FILENAME_MAX]; + int entity_value_length[MXML_MAX_ENTITY]; + int entity_name_length[MXML_MAX_ENTITY]; for (ip = 0; ip < MXML_MAX_ENTITY; ip++) entity_value[ip] = NULL; @@ -1918,10 +1920,12 @@ int mxml_parse_entity(char **buf, const char *file_name, char *error, int error_ length = strlen(buffer); for (i = 0; i < nentity; i++) { p = buffer; + entity_value_length[i] = strlen(entity_value[i]); + entity_name_length[i] = strlen(entity_name[i]); while (1) { pv = strstr(p, entity_name[i]); if (pv) { - length += strlen(entity_value[i]) - strlen(entity_name[i]); + length += entity_value_length[i] - entity_name_length[i]; p = pv + 1; } else { break; @@ -1947,10 +1951,10 @@ int mxml_parse_entity(char **buf, const char *file_name, char *error, int error_ if (*p == '&') { /* found entity */ for (j = 0; j < nentity; j++) { - if (strncmp(p, entity_name[j], strlen(entity_name[j])) == 0) { - for (k = 0; k < (int) strlen(entity_value[j]); k++) + if (strncmp(p, entity_name[j], entity_name_length[j]) == 0) { + for (k = 0; k < (int) entity_value_length[j]; k++) *pv++ = entity_value[j][k]; - p += strlen(entity_name[j]); + p += entity_name_length[j]; break; } }