enhanced the enhancement, fixed another couple of special cases.

* parser.c: enhanced the enhancement, fixed another couple of
  special cases.
diff --git a/ChangeLog b/ChangeLog
index e83e05d..05472c7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri May 14 12:37:24 HKT 2004 William Brack <wbrack@mmm.com.hk>
+
+	* parser.c: enhanced the enhancement, fixed another couple of
+	  special cases.
+
 Fri May 14 11:48:33 HKT 2004 William Brack <wbrack@mmm.com.hk>
 
 	* parser.c: small enhancement to dtd handling of (a?)+ (bug 142487)
diff --git a/parser.c b/parser.c
index 4810e22..d038e46 100644
--- a/parser.c
+++ b/parser.c
@@ -4794,8 +4794,13 @@
     }
     NEXT;
     if (RAW == '?') {
-	if (ret != NULL)
-	    ret->ocur = XML_ELEMENT_CONTENT_OPT;
+	if (ret != NULL) {
+	    if ((ret->ocur == XML_ELEMENT_CONTENT_PLUS) ||
+	        (ret->ocur == XML_ELEMENT_CONTENT_MULT))
+	        ret->ocur = XML_ELEMENT_CONTENT_MULT;
+	    else
+	        ret->ocur = XML_ELEMENT_CONTENT_OPT;
+	}
 	NEXT;
     } else if (RAW == '*') {
 	if (ret != NULL) {
@@ -4822,8 +4827,9 @@
 	if (ret != NULL) {
 	    int found = 0;
 
-	    if (ret->ocur == XML_ELEMENT_CONTENT_OPT)
-	        ret->ocur == XML_ELEMENT_CONTENT_MULT;
+	    if ((ret->ocur == XML_ELEMENT_CONTENT_OPT) ||
+	        (ret->ocur == XML_ELEMENT_CONTENT_MULT))
+	        ret->ocur = XML_ELEMENT_CONTENT_MULT;
 	    else
 	        ret->ocur = XML_ELEMENT_CONTENT_PLUS;
 	    /*