153aa9179Sopenharmony_ci--- 253aa9179Sopenharmony_ci xmlreader.c | 36 +++++++++++++++++------------------- 353aa9179Sopenharmony_ci 1 file changed, 17 insertions(+), 19 deletions(-) 453aa9179Sopenharmony_ci 553aa9179Sopenharmony_cidiff --git a/xmlreader.c b/xmlreader.c 653aa9179Sopenharmony_ciindex ac97bde..193a5d4 100644 753aa9179Sopenharmony_ci--- a/xmlreader.c 853aa9179Sopenharmony_ci+++ b/xmlreader.c 953aa9179Sopenharmony_ci@@ -676,30 +676,23 @@ xmlTextReaderDebug(xmlTextReaderPtr reader) { 1053aa9179Sopenharmony_ci * 1153aa9179Sopenharmony_ci * Pushes a new entity reference node on top of the entities stack 1253aa9179Sopenharmony_ci * 1353aa9179Sopenharmony_ci- * Returns 0 in case of error, the index in the stack otherwise 1453aa9179Sopenharmony_ci+ * Returns -1 in case of error, the index in the stack otherwise 1553aa9179Sopenharmony_ci */ 1653aa9179Sopenharmony_ci static int 1753aa9179Sopenharmony_ci xmlTextReaderEntPush(xmlTextReaderPtr reader, xmlNodePtr value) 1853aa9179Sopenharmony_ci { 1953aa9179Sopenharmony_ci- if (reader->entMax <= 0) { 2053aa9179Sopenharmony_ci- reader->entMax = 10; 2153aa9179Sopenharmony_ci- reader->entTab = (xmlNodePtr *) xmlMalloc(reader->entMax * 2253aa9179Sopenharmony_ci- sizeof(reader->entTab[0])); 2353aa9179Sopenharmony_ci- if (reader->entTab == NULL) { 2453aa9179Sopenharmony_ci- xmlGenericError(xmlGenericErrorContext, "xmlMalloc failed !\n"); 2553aa9179Sopenharmony_ci- return (0); 2653aa9179Sopenharmony_ci- } 2753aa9179Sopenharmony_ci- } 2853aa9179Sopenharmony_ci if (reader->entNr >= reader->entMax) { 2953aa9179Sopenharmony_ci- reader->entMax *= 2; 3053aa9179Sopenharmony_ci- reader->entTab = 3153aa9179Sopenharmony_ci- (xmlNodePtr *) xmlRealloc(reader->entTab, 3253aa9179Sopenharmony_ci- reader->entMax * 3353aa9179Sopenharmony_ci- sizeof(reader->entTab[0])); 3453aa9179Sopenharmony_ci- if (reader->entTab == NULL) { 3553aa9179Sopenharmony_ci+ size_t newSize = reader->entMax == 0 ? 10 : reader->entMax * 2; 3653aa9179Sopenharmony_ci+ xmlNodePtr *tmp; 3753aa9179Sopenharmony_ci+ 3853aa9179Sopenharmony_ci+ tmp = (xmlNodePtr *) xmlRealloc(reader->entTab, 3953aa9179Sopenharmony_ci+ newSize * sizeof(*tmp)); 4053aa9179Sopenharmony_ci+ if (tmp == NULL) { 4153aa9179Sopenharmony_ci xmlGenericError(xmlGenericErrorContext, "xmlRealloc failed !\n"); 4253aa9179Sopenharmony_ci- return (0); 4353aa9179Sopenharmony_ci+ return (-1); 4453aa9179Sopenharmony_ci } 4553aa9179Sopenharmony_ci+ reader->entTab = tmp; 4653aa9179Sopenharmony_ci+ reader->entMax = newSize; 4753aa9179Sopenharmony_ci } 4853aa9179Sopenharmony_ci reader->entTab[reader->entNr] = value; 4953aa9179Sopenharmony_ci reader->ent = value; 5053aa9179Sopenharmony_ci@@ -1174,7 +1167,11 @@ xmlTextReaderValidateEntity(xmlTextReaderPtr reader) { 5153aa9179Sopenharmony_ci if ((node->children != NULL) && 5253aa9179Sopenharmony_ci (node->children->type == XML_ENTITY_DECL) && 5353aa9179Sopenharmony_ci (node->children->children != NULL)) { 5453aa9179Sopenharmony_ci- xmlTextReaderEntPush(reader, node); 5553aa9179Sopenharmony_ci+ if (xmlTextReaderEntPush(reader, node) < 0) { 5653aa9179Sopenharmony_ci+ if (node == oldnode) 5753aa9179Sopenharmony_ci+ break; 5853aa9179Sopenharmony_ci+ goto skip_children; 5953aa9179Sopenharmony_ci+ } 6053aa9179Sopenharmony_ci node = node->children->children; 6153aa9179Sopenharmony_ci continue; 6253aa9179Sopenharmony_ci } else { 6353aa9179Sopenharmony_ci@@ -1621,7 +1618,8 @@ node_found: 6453aa9179Sopenharmony_ci if ((reader->node->children != NULL) && 6553aa9179Sopenharmony_ci (reader->node->children->type == XML_ENTITY_DECL) && 6653aa9179Sopenharmony_ci (reader->node->children->children != NULL)) { 6753aa9179Sopenharmony_ci- xmlTextReaderEntPush(reader, reader->node); 6853aa9179Sopenharmony_ci+ if (xmlTextReaderEntPush(reader, reader->node) < 0) 6953aa9179Sopenharmony_ci+ goto get_next_node; 7053aa9179Sopenharmony_ci reader->node = reader->node->children->children; 7153aa9179Sopenharmony_ci } 7253aa9179Sopenharmony_ci #ifdef LIBXML_REGEXP_ENABLED 7353aa9179Sopenharmony_ci-- 7453aa9179Sopenharmony_ci2.27.0 7553aa9179Sopenharmony_ci 7653aa9179Sopenharmony_ciush(reader, reader->node); 7753aa9179Sopenharmony_ci+ if (xmlTextReaderEntPush(reader, reader->node) < 0) 7853aa9179Sopenharmony_ci+ goto get_next_node; 7953aa9179Sopenharmony_ci reader->node = reader->node->children->children; 8053aa9179Sopenharmony_ci } 8153aa9179Sopenharmony_ci #ifdef LIBXML_REGEXP_ENABLED 8253aa9179Sopenharmony_ci-- 8353aa9179Sopenharmony_ci2.27.0 8453aa9179Sopenharmony_ci 85