From 1d0476709376d72d04bcfda5dc744d9fb4bc7720 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Sat, 9 Jun 2001 16:41:01 +0000 Subject: [PATCH] - valid.c: (a? , b? , c? , ... , z?) was storing/restauring state far too often, simple fix used to avoid it. Daniel --- ChangeLog | 5 +++++ valid.c | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/ChangeLog b/ChangeLog index cea024b2..5d67c165 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Jun 9 18:39:03 CEST 2001 Daniel Veillard + + * valid.c: (a? , b? , c? , ... , z?) was storing/restauring + state far too often, simple fix used to avoid it. + Sat Jun 9 16:10:36 CEST 2001 Daniel Veillard * xinclude.c: Raphael Hertzog had a trouble with DTD nodes diff --git a/valid.c b/valid.c index 6caf544f..41a5863a 100644 --- a/valid.c +++ b/valid.c @@ -3417,6 +3417,19 @@ cont: CONT = CONT->c1; goto cont; case XML_ELEMENT_CONTENT_SEQ: + /* + * Small optimization. + */ + if ((CONT->c1->type == XML_ELEMENT_CONTENT_ELEMENT) && + ((CONT->c1->ocur == XML_ELEMENT_CONTENT_OPT) || + (CONT->c1->ocur == XML_ELEMENT_CONTENT_MULT))) { + if ((NODE == NULL) || + (!xmlStrEqual(NODE->name, CONT->c1->name))) { + DEPTH++; + CONT = CONT->c2; + goto cont; + } + } DEPTH++; CONT = CONT->c1; goto cont;