mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-08-01 10:06:59 +03:00
more performance hunting reducing memory allocation and free and avoiding
* SAX2.c xmlreader.c include/libxml/parser.h: more performance hunting reducing memory allocation and free and avoiding expensive routines Daniel
This commit is contained in:
18
xmlreader.c
18
xmlreader.c
@ -263,9 +263,11 @@ xmlTextReaderFreeProp(xmlTextReaderPtr reader, xmlAttrPtr cur) {
|
||||
(xmlDictOwns(reader->ctxt->dict, cur->name) != 1) &&
|
||||
(cur->name != NULL))
|
||||
xmlFree((xmlChar *)cur->name);
|
||||
if ((reader != NULL) && (reader->ctxt != NULL)) {
|
||||
if ((reader != NULL) && (reader->ctxt != NULL) &&
|
||||
(reader->ctxt->freeAttrsNr < 100)) {
|
||||
cur->next = reader->ctxt->freeAttrs;
|
||||
reader->ctxt->freeAttrs = cur;
|
||||
reader->ctxt->freeAttrsNr++;
|
||||
} else {
|
||||
xmlFree(cur);
|
||||
}
|
||||
@ -347,10 +349,13 @@ xmlTextReaderFreeNodeList(xmlTextReaderPtr reader, xmlNodePtr cur) {
|
||||
(cur->type != XML_COMMENT_NODE) &&
|
||||
(cur->name != NULL))
|
||||
xmlFree((xmlChar *)cur->name);
|
||||
if ((cur->type == XML_ELEMENT_NODE) &&
|
||||
(reader != NULL) && (reader->ctxt != NULL)) {
|
||||
if (((cur->type == XML_ELEMENT_NODE) ||
|
||||
(cur->type == XML_TEXT_NODE)) &&
|
||||
(reader != NULL) && (reader->ctxt != NULL) &&
|
||||
(reader->ctxt->freeElemsNr < 100)) {
|
||||
cur->next = reader->ctxt->freeElems;
|
||||
reader->ctxt->freeElems = cur;
|
||||
reader->ctxt->freeElemsNr++;
|
||||
} else {
|
||||
xmlFree(cur);
|
||||
}
|
||||
@ -414,10 +419,13 @@ xmlTextReaderFreeNode(xmlTextReaderPtr reader, xmlNodePtr cur) {
|
||||
(cur->type != XML_COMMENT_NODE) &&
|
||||
(cur->name != NULL))
|
||||
xmlFree((xmlChar *)cur->name);
|
||||
if ((cur->type == XML_ELEMENT_NODE) &&
|
||||
(reader != NULL) && (reader->ctxt != NULL)) {
|
||||
if (((cur->type == XML_ELEMENT_NODE) ||
|
||||
(cur->type == XML_TEXT_NODE)) &&
|
||||
(reader != NULL) && (reader->ctxt != NULL) &&
|
||||
(reader->ctxt->freeElemsNr < 100)) {
|
||||
cur->next = reader->ctxt->freeElems;
|
||||
reader->ctxt->freeElems = cur;
|
||||
reader->ctxt->freeElemsNr++;
|
||||
} else {
|
||||
xmlFree(cur);
|
||||
}
|
||||
|
Reference in New Issue
Block a user