diff --git a/parser.c b/parser.c index 85494df4..43b88358 100644 --- a/parser.c +++ b/parser.c @@ -6082,14 +6082,20 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, int inputchk) { NEXT; if (elem == NULL) { ret = xmlNewDocElementContent(ctxt->myDoc, NULL, XML_ELEMENT_CONTENT_OR); - if (ret == NULL) return(NULL); + if (ret == NULL) { + xmlFreeDocElementContent(ctxt->myDoc, cur); + return(NULL); + } ret->c1 = cur; if (cur != NULL) cur->parent = ret; cur = ret; } else { n = xmlNewDocElementContent(ctxt->myDoc, NULL, XML_ELEMENT_CONTENT_OR); - if (n == NULL) return(NULL); + if (n == NULL) { + xmlFreeDocElementContent(ctxt->myDoc, ret); + return(NULL); + } n->c1 = xmlNewDocElementContent(ctxt->myDoc, elem, XML_ELEMENT_CONTENT_ELEMENT); if (n->c1 != NULL) n->c1->parent = n;