The lesson of the day is
  "never forget an epsilon transition or DocBook will raise it"
- valid.c: forgot an epsilon transition in for ()+
- test/VCM/v21.xml : added a specific test case
Daniel
diff --git a/ChangeLog b/ChangeLog
index 42b3b08..9c30481 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Apr 20 17:45:47 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
+
+	* valid.c: forgot an epsilon transition in for ()+
+	* test/VCM/v21.xml : added a specific test case
+
 Fri Apr 20 15:46:04 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
 
 	* valid.c: removed a state explosion exhibited by RSS
diff --git a/test/VCM/v21.xml b/test/VCM/v21.xml
new file mode 100644
index 0000000..4c8d923
--- /dev/null
+++ b/test/VCM/v21.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b)+, c) >
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+]>
+<doc><a/><b/><c/></doc>
diff --git a/valid.c b/valid.c
index b8077b4..4e9bcfb 100644
--- a/valid.c
+++ b/valid.c
@@ -3590,7 +3590,8 @@
     if ((consumed) && (CONT != NULL) &&
 	(CONT->parent != NULL) &&
 	((CONT->ocur == XML_ELEMENT_CONTENT_MULT) ||
-	(CONT->ocur == XML_ELEMENT_CONTENT_OPT))) {
+	 (CONT->ocur == XML_ELEMENT_CONTENT_OPT) ||
+	 ((CONT->ocur == XML_ELEMENT_CONTENT_PLUS) && (OCCURENCE)))) {
 	DEBUG_VALID_MSG("saving parent branch");
 	vstateVPush(ctxt, CONT, NODE, DEPTH, OCCURS, ROLLBACK_PARENT);
     }