From 8534905f6243f5f1b441776b974c1828ceb6a77a Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Fri, 20 Apr 2001 13:48:21 +0000 Subject: [PATCH] - valid.c: removed a state explosion exhibited by RSS - test/valid/rss.xml result/valid/rss.xml*: added the testcase from bug #51872 Daniel --- ChangeLog | 6 ++ result/valid/rss.xml | 170 +++++++++++++++++++++++++++++++++++++ result/valid/rss.xml.err | 3 + test/valid/rss.xml | 178 +++++++++++++++++++++++++++++++++++++++ valid.c | 12 +++ 5 files changed, 369 insertions(+) create mode 100644 result/valid/rss.xml create mode 100644 result/valid/rss.xml.err create mode 100644 test/valid/rss.xml diff --git a/ChangeLog b/ChangeLog index 9d557c05..42b3b082 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Apr 20 15:46:04 CEST 2001 Daniel Veillard + + * valid.c: removed a state explosion exhibited by RSS + * test/valid/rss.xml result/valid/rss.xml*: added the testcase + from bug #51872 + Fri Apr 20 14:52:44 CEST 2001 Daniel Veillard * valid.[ch] tree.h: worked *hard* to get non-determinist content diff --git a/result/valid/rss.xml b/result/valid/rss.xml new file mode 100644 index 00000000..ee5145f0 --- /dev/null +++ b/result/valid/rss.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + +PP + + diff --git a/result/valid/rss.xml.err b/result/valid/rss.xml.err new file mode 100644 index 00000000..307a8ccf --- /dev/null +++ b/result/valid/rss.xml.err @@ -0,0 +1,3 @@ +./test/valid/rss.xml:178: validity error: Element rss doesn't carry attribute version + + ^ diff --git a/test/valid/rss.xml b/test/valid/rss.xml new file mode 100644 index 00000000..429e0fe6 --- /dev/null +++ b/test/valid/rss.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + +PP + + diff --git a/valid.c b/valid.c index c36930f7..b8077b47 100644 --- a/valid.c +++ b/valid.c @@ -3654,6 +3654,18 @@ cont: } break; case XML_ELEMENT_CONTENT_OR: + /* + * Small optimization. + */ + if (CONT->c1->type == XML_ELEMENT_CONTENT_ELEMENT) { + if ((NODE == NULL) || + (!xmlStrEqual(NODE->name, CONT->c1->name))) { + DEPTH++; + CONT = CONT->c2; + goto cont; + } + } + /* * save the second branch 'or' branch */