Workaround for bug #323510: substituted the epsilon transition for a
* xmlschemas.c: Workaround for bug #323510: substituted the
epsilon transition for a labelled transition, in order to
avoid a bug in xmlregexp.c which eliminated the epsilon
transition and marked the initial state as final.
diff --git a/xmlschemas.c b/xmlschemas.c
index 79d58a0..f7f7567 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -12595,10 +12595,11 @@
} else if ((particle->maxOccurs >= UNBOUNDED) &&
(particle->minOccurs < 2)) {
/* Special case. */
- start = ctxt->state;
+ start = ctxt->state;
ctxt->state = xmlAutomataNewTransition2(ctxt->am, start, NULL,
- elemDecl->name, elemDecl->targetNamespace, elemDecl);
- xmlAutomataNewEpsilon(ctxt->am, ctxt->state, start);
+ elemDecl->name, elemDecl->targetNamespace, elemDecl);
+ ctxt->state = xmlAutomataNewTransition2(ctxt->am, ctxt->state, ctxt->state,
+ elemDecl->name, elemDecl->targetNamespace, elemDecl);
} else {
int counter;
int maxOccurs = particle->maxOccurs == UNBOUNDED ?