- valid.c test/VCM/v2[34].xml: Fixed bug #54631 added specific test
  case
- INSTALL: was empty added stuff from the FAQ
Daniel
diff --git a/ChangeLog b/ChangeLog
index 0725922..f1fdbc9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Tue May 15 10:52:19 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
+
+	* valid.c test/VCM/v2[34].xml: Fixed bug #54631 added specific test
+	  case
+	* INSTALL: was empty added stuff from the FAQ
+
 Fri May 11 19:37:30 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
 
 	* tree.[ch]: fixing bug #54446, by cleaning some bugs in the
diff --git a/INSTALL b/INSTALL
index e69de29..57b6f25 100644
--- a/INSTALL
+++ b/INSTALL
@@ -0,0 +1,64 @@
+Extracted from the documentation:
+   http://xmlsoft.org/FAQ.html#Compilatio
+
+Compilation
+
+   1.What is the process to compile libxml ? 
+
+     As most UNIX libraries libxml follows the "standard":
+
+     gunzip -c xxx.tar.gz | tar xvf -
+
+     cd libxml-xxxx
+
+     ./configure --help
+
+     to see the options, then the compilation/installation proper
+
+     ./configure [possible options]
+
+     make
+
+     make install
+
+     At that point you may have to rerun ldconfig or similar utility to
+     update your list of installed shared libs.
+
+   2.What other libraries are needed to compile/install libxml ? 
+
+     Libxml does not requires any other library, the normal C ANSI API
+     should be sufficient (please report any violation to this rule you
+     may find).
+
+     However if found at configuration time libxml will detect and use
+     the following libs:
+
+         libz: a highly portable and available widely compression library 
+             http://www.info-zip.org/pub/infozip/zlib/
+         iconv: a powerful character encoding conversion library. It's
+	     included by default on recent glibc libraries, so it doesn't
+	     need to be installed specifically on linux. It seems it's
+	     now part of the official UNIX specification. Here is one
+	     implementation of the library which source can be found here.
+             http://clisp.cons.org/~haible/packages-libiconv.html
+             ftp://ftp.ilog.fr/pub/Users/haible/gnu/
+
+   3.libxml does not compile with HP-UX's optional ANSI-C compiler 
+
+     this is due to macro limitations. Try to add " -Wp,-H16800 -Ae"
+     to the CFLAGS
+
+     you can also install and use gcc instead or use a precompiled version
+     of libxml, both available from the HP-UX Porting and Archive Centre
+
+   4.make check fails on some platforms 
+
+     Sometime the regression tests results don't completely match the
+     value produced by the parser, and the makefile uses diff to print
+     the delta. On some platforms the diff return breaks the compilation
+     process, if the diff is small this is probably not a serious problem
+
+Daniel
+veillard@redhat.com
+
+$Id$
diff --git a/test/VCM/v23.xml b/test/VCM/v23.xml
new file mode 100644
index 0000000..6aedcfb
--- /dev/null
+++ b/test/VCM/v23.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a?, (b, c?)?, d)>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ELEMENT d EMPTY>
+]>
+<doc>
+<d/>
+</doc>
diff --git a/test/VCM/v24.xml b/test/VCM/v24.xml
new file mode 100644
index 0000000..25367c4
--- /dev/null
+++ b/test/VCM/v24.xml
@@ -0,0 +1,16 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a?, (b, c?, d?)?, (e | f | g)*, (h+ | i | j+))>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ELEMENT d EMPTY>
+<!ELEMENT e EMPTY>
+<!ELEMENT f EMPTY>
+<!ELEMENT g EMPTY>
+<!ELEMENT h EMPTY>
+<!ELEMENT i EMPTY>
+<!ELEMENT j EMPTY>
+]>
+<doc>
+<i/>
+</doc>
diff --git a/valid.c b/valid.c
index 7393d1e..81df778 100644
--- a/valid.c
+++ b/valid.c
@@ -23,6 +23,8 @@
 #include <libxml/xmlerror.h>
 #include <libxml/list.h>
 
+/* #define DEBUG_VALID_ALGO */
+
 /*
  * Generic function for accessing stacks in the Validity Context
  */
@@ -137,8 +139,6 @@
 
 PUSH_AND_POP(static, xmlNodePtr, node)
 
-/* #define DEBUG_VALID_ALGO */
-
 #ifdef DEBUG_VALID_ALGO
 static void
 xmlValidPrintNode(xmlNodePtr cur) {
@@ -3278,7 +3278,6 @@
 static int
 xmlValidateElementType(xmlValidCtxtPtr ctxt) {
     int ret = -1;
-    int consumed = 1;
     int determinist = 1;
 
     NODE = xmlValidateSkipIgnorable(NODE);
@@ -3306,7 +3305,6 @@
 	DEBUG_VALID_MSG("restaured parent branch");
 	DEBUG_VALID_STATE(NODE, CONT)
 	ret = 1;
-	consumed = 0;
 	goto analyze;
     }
 
@@ -3315,8 +3313,7 @@
      * we may have to save a backup state here. This is the equivalent
      * of handling epsilon transition in NFAs.
      */
-    if ((consumed) && (CONT != NULL) &&
-	(CONT->parent != NULL) &&
+    if ((CONT != NULL) &&
 	((CONT->ocur == XML_ELEMENT_CONTENT_MULT) ||
 	 (CONT->ocur == XML_ELEMENT_CONTENT_OPT) ||
 	 ((CONT->ocur == XML_ELEMENT_CONTENT_PLUS) && (OCCURENCE)))) {
@@ -3350,7 +3347,6 @@
 		} while ((NODE != NULL) &&
 			 ((NODE->type != XML_ELEMENT_NODE) &&
 			  (NODE->type != XML_TEXT_NODE)));
-		consumed = 1;
                 ret = 1;
 		break;
 	    } else {
@@ -3381,7 +3377,6 @@
 		} while ((NODE != NULL) &&
 			 ((NODE->type != XML_ELEMENT_NODE) &&
 			  (NODE->type != XML_TEXT_NODE)));
-		consumed = 1;
 	    } else {
 		DEBUG_VALID_MSG("element failed");
 		ret = 0;
@@ -3442,7 +3437,6 @@
 		    }
 		    if (cur != ctxt->vstate->node)
 			determinist = -3;
-		    consumed = 0;
 		    goto cont;
 		case XML_ELEMENT_CONTENT_PLUS:
 		    if (OCCURENCE == 0) {
@@ -3454,7 +3448,6 @@
 			}
 			if (cur != ctxt->vstate->node)
 			    determinist = -3;
-			consumed = 0;
 			goto cont;
 		    }
 		    DEBUG_VALID_MSG("Plus branch found");
@@ -3569,7 +3562,6 @@
 	}
 	if (cur != ctxt->vstate->node)
 	    determinist = -3;
-	consumed = 0;
 	goto cont;
     }
     if (ret == 0) {
@@ -3581,7 +3573,6 @@
 	    DEBUG_VALID_MSG("exhaustion, failed");
 	    return(0);
 	}
-	consumed = 0;
 	if (cur != ctxt->vstate->node)
 	    determinist = -3;
 	goto cont;