mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-24 13:33:01 +03:00
parser: Rework shrinking of input buffers
Don't try to grow the input buffer in xmlParserShrink. This makes sure that no memory allocations are made and the function always succeeds. Remove unnecessary invocations of SHRINK. Invoke SHRINK at the end of DTD parsing loops. Shrink before growing.
This commit is contained in:
@@ -3100,7 +3100,6 @@ htmlParseScript(htmlParserCtxtPtr ctxt) {
|
||||
int nbchar = 0;
|
||||
int cur,l;
|
||||
|
||||
SHRINK;
|
||||
cur = CUR_CHAR(l);
|
||||
while (cur != 0) {
|
||||
if ((cur == '<') && (NXT(1) == '/')) {
|
||||
@@ -3358,7 +3357,6 @@ htmlParsePI(htmlParserCtxtPtr ctxt) {
|
||||
* this is a Processing Instruction.
|
||||
*/
|
||||
SKIP(2);
|
||||
SHRINK;
|
||||
|
||||
/*
|
||||
* Parse the target name and check for special support like
|
||||
@@ -3481,7 +3479,6 @@ htmlParseComment(htmlParserCtxtPtr ctxt) {
|
||||
|
||||
state = ctxt->instate;
|
||||
ctxt->instate = XML_PARSER_COMMENT;
|
||||
SHRINK;
|
||||
SKIP(4);
|
||||
buf = (xmlChar *) xmlMallocAtomic(size);
|
||||
if (buf == NULL) {
|
||||
@@ -4477,8 +4474,8 @@ htmlParseContent(htmlParserCtxtPtr ctxt) {
|
||||
htmlParseCharData(ctxt);
|
||||
}
|
||||
|
||||
GROW;
|
||||
SHRINK;
|
||||
GROW;
|
||||
}
|
||||
if (currentNode != NULL) xmlFree(currentNode);
|
||||
}
|
||||
@@ -4920,8 +4917,8 @@ htmlParseContentInternal(htmlParserCtxtPtr ctxt) {
|
||||
htmlParseCharData(ctxt);
|
||||
}
|
||||
|
||||
GROW;
|
||||
SHRINK;
|
||||
GROW;
|
||||
}
|
||||
if (currentNode != NULL) xmlFree(currentNode);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user