@@ -486,11 +486,13 @@ str parse_content(document* d)
486 return res;
486 return res;
489+// Based on looking at ~50Kb XML documents, they seem to have ~700 attributes
490+// and ~300 nodes, so size appropriately to cope with that.
489typedef struct
491typedef struct
491 document document;
493 document document;
492 attr attrs[1000];
494 attr attrs[1000];
493− node nodes[1000];
495+ node nodes[500];
496document* document_parse(char* s, int slen)
498document* document_parse(char* s, int slen)
@@ -509,7 +511,7 @@ document* document_parse(char* s, int slen)
509 d->attrs.used = 0;
511 d->attrs.used = 0;
510 d->attrs.attrs = buf->attrs;
512 d->attrs.attrs = buf->attrs;
511 d->attrs.alloc = NULL;
513 d->attrs.alloc = NULL;
512− d->nodes.size = 1000;
514+ d->nodes.size = 500;
513 d->nodes.used_back = 0;
515 d->nodes.used_back = 0;
514 d->nodes.used_front = 1;
516 d->nodes.used_front = 1;
515 d->nodes.nodes = buf->nodes;
517 d->nodes.nodes = buf->nodes;