diff --git a/ChangeLog b/ChangeLog index e417afc2..c88511b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Dec 12 15:11:13 CET 2005 Kasimier Buchcik + + * 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. + Mon Dec 12 14:25:46 CET 2005 Daniel Veillard * xmlreader.c: Gary Coady pointed a memory leak in diff --git a/xmlschemas.c b/xmlschemas.c index 79d58a00..f7f7567c 100644 --- a/xmlschemas.c +++ b/xmlschemas.c @@ -12595,10 +12595,11 @@ xmlSchemaBuildContentModelForElement(xmlSchemaParserCtxtPtr ctxt, } 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 ?