mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-29 11:41:22 +03:00
optimization when freeing hash tables. some tuning of buffer allocations
* dict.c hash.c: optimization when freeing hash tables. * parser.c xmlIO.c include/libxml/tree.h: some tuning of buffer allocations * parser.c parserInternals.c include/libxml/parser.h: keep a single allocated block for all the attributes callbacks, avoid useless malloc()/free() * tree.c: do not realloc() when growing a buffer if the buffer ain't full, malloc/memcpy/free avoid copying memory. Daniel
This commit is contained in:
9
xmlIO.c
9
xmlIO.c
@ -1574,7 +1574,7 @@ xmlAllocParserInputBuffer(xmlCharEncoding enc) {
|
||||
return(NULL);
|
||||
}
|
||||
memset(ret, 0, (size_t) sizeof(xmlParserInputBuffer));
|
||||
ret->buffer = xmlBufferCreate();
|
||||
ret->buffer = xmlBufferCreateSize(2 * xmlDefaultBufferSize);
|
||||
if (ret->buffer == NULL) {
|
||||
xmlFree(ret);
|
||||
return(NULL);
|
||||
@ -1582,7 +1582,7 @@ xmlAllocParserInputBuffer(xmlCharEncoding enc) {
|
||||
ret->buffer->alloc = XML_BUFFER_ALLOC_DOUBLEIT;
|
||||
ret->encoder = xmlGetCharEncodingHandler(enc);
|
||||
if (ret->encoder != NULL)
|
||||
ret->raw = xmlBufferCreate();
|
||||
ret->raw = xmlBufferCreateSize(2 * xmlDefaultBufferSize);
|
||||
else
|
||||
ret->raw = NULL;
|
||||
ret->readcallback = NULL;
|
||||
@ -2173,16 +2173,15 @@ xmlParserInputBufferGrow(xmlParserInputBufferPtr in, int len) {
|
||||
int buffree;
|
||||
unsigned int needSize;
|
||||
|
||||
if ((len <= MINLEN) && (len != 4))
|
||||
if ((len <= MINLEN) && (len != 4))
|
||||
len = MINLEN;
|
||||
|
||||
buffree = in->buffer->size - in->buffer->use;
|
||||
if (buffree <= 0) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"xmlParserInputBufferGrow : buffer full !\n");
|
||||
return(0);
|
||||
}
|
||||
if (len > buffree)
|
||||
len = buffree;
|
||||
|
||||
needSize = in->buffer->use + len + 1;
|
||||
if (needSize > in->buffer->size){
|
||||
|
Reference in New Issue
Block a user