mirror of
https://github.com/GNOME/libxml2.git
synced 2025-03-13 18:47:01 +08:00
fixed bug #120386 again a problem introduced when trying to reuse automata
* relaxng.c: fixed bug #120386 again a problem introduced when trying to reuse automata for content validation. Fix a bug report problem on zeroOrMore * result/relaxng/tutor3_7_err: change slightly error reporting. Daniel
This commit is contained in:
parent
68f8fad71e
commit
c1ffa0ab97
@ -1,3 +1,10 @@
|
||||
Tue Aug 26 15:54:04 CEST 2003 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* relaxng.c: fixed bug #120386 again a problem introduced when
|
||||
trying to reuse automata for content validation. Fix a bug report
|
||||
problem on zeroOrMore
|
||||
* result/relaxng/tutor3_7_err: change slightly error reporting.
|
||||
|
||||
Mon Aug 25 13:24:57 CEST 2003 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* include/libxml/Makefile.am: make sure the new header will
|
||||
|
19
relaxng.c
19
relaxng.c
@ -365,6 +365,8 @@ struct _xmlRelaxNGValidCtxt {
|
||||
int pstate; /* progressive state */
|
||||
xmlNodePtr pnode; /* the current node */
|
||||
xmlRelaxNGDefinePtr pdef; /* the non-streamable definition */
|
||||
int perr; /* signal error in content model
|
||||
outside the regexp */
|
||||
};
|
||||
|
||||
/**
|
||||
@ -7690,6 +7692,8 @@ xmlRelaxNGValidateCompiledCallback(xmlRegExecCtxtPtr exec ATTRIBUTE_UNUSED,
|
||||
return;
|
||||
}
|
||||
ret = xmlRelaxNGValidateDefinition(ctxt, define);
|
||||
if (ret != 0)
|
||||
ctxt->perr = ret;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -7708,11 +7712,13 @@ xmlRelaxNGValidateCompiledContent(xmlRelaxNGValidCtxtPtr ctxt,
|
||||
xmlRegExecCtxtPtr exec;
|
||||
xmlNodePtr cur;
|
||||
int ret = 0;
|
||||
int oldperr = ctxt->perr;
|
||||
|
||||
if ((ctxt == NULL) || (regexp == NULL))
|
||||
return(-1);
|
||||
exec = xmlRegNewExecCtxt(regexp,
|
||||
xmlRelaxNGValidateCompiledCallback, ctxt);
|
||||
ctxt->perr = 0;
|
||||
cur = content;
|
||||
while (cur != NULL) {
|
||||
ctxt->state->seq = cur;
|
||||
@ -7762,6 +7768,14 @@ xmlRelaxNGValidateCompiledContent(xmlRelaxNGValidCtxtPtr ctxt,
|
||||
ret = -1;
|
||||
}
|
||||
xmlRegFreeExecCtxt(exec);
|
||||
/*
|
||||
* There might be content model errors outside of the pure
|
||||
* regexp validation, e.g. for attribute values.
|
||||
*/
|
||||
if ((ret == 0) && (ctxt->perr != 0)) {
|
||||
ret = ctxt->perr;
|
||||
}
|
||||
ctxt->perr = oldperr;
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@ -9777,8 +9791,13 @@ xmlRelaxNGValidateState(xmlRelaxNGValidCtxtPtr ctxt,
|
||||
}
|
||||
ctxt->states = res;
|
||||
ctxt->flags = oldflags;
|
||||
#if 0
|
||||
/*
|
||||
* errors may have to be propagated back...
|
||||
*/
|
||||
if (ctxt->errNr > errNr)
|
||||
xmlRelaxNGPopErrors(ctxt, errNr);
|
||||
#endif
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
RNG validity error: file ./test/relaxng/tutor3_7.rng line 1 element element
|
||||
Expecting an element , got nothing
|
||||
RNG validity error: file ./test/relaxng/tutor3_7.rng line 1 element element
|
||||
Invalid sequence in interleave
|
||||
RNG validity error: file ./test/relaxng/tutor3_7.rng line 1 element element
|
||||
Element element failed to validate content
|
||||
|
Loading…
x
Reference in New Issue
Block a user