aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@src.gnome.org>2003-02-21 23:23:28 +0000
committerDaniel Veillard <veillard@src.gnome.org>2003-02-21 23:23:28 +0000
commit44e1dd0027983f7112e5b6a9101156b574ecbc26 (patch)
tree46f222ae7a9fb5ff8c8eeed3d08a71bd5a04be30
parentc5312d7c7658f12e30e11f8700f1c00d9ca3a99f (diff)
downloadandroid_external_libxml2-44e1dd0027983f7112e5b6a9101156b574ecbc26.tar.gz
android_external_libxml2-44e1dd0027983f7112e5b6a9101156b574ecbc26.tar.bz2
android_external_libxml2-44e1dd0027983f7112e5b6a9101156b574ecbc26.zip
fixing some nodeinfo in entities problem raised by Glenn W. Bach
* parser.c: fixing some nodeinfo in entities problem raised by Glenn W. Bach * relaxng.c: implemented the first section 7.3 check * result/relaxng/*: updated the results Daniel
-rw-r--r--ChangeLog7
-rw-r--r--parser.c13
-rw-r--r--relaxng.c148
-rw-r--r--result/relaxng/spec1_err2
-rw-r--r--result/relaxng/tutor10_1_4.err4
-rw-r--r--result/relaxng/tutor10_1_5.err4
-rw-r--r--result/relaxng/tutor10_1_6.err4
-rw-r--r--result/relaxng/tutor10_2_3.err4
-rw-r--r--result/relaxng/tutor10_2_4.err4
-rw-r--r--result/relaxng/tutor10_7_3.err2
-rw-r--r--result/relaxng/tutor10_8_3.err2
-rw-r--r--result/relaxng/tutor11_2_2.err2
-rw-r--r--result/relaxng/tutor11_2_3.err2
-rw-r--r--result/relaxng/tutor12_1_err2
-rw-r--r--result/relaxng/tutor3_2_1.err4
-rw-r--r--result/relaxng/tutor3_5_2.err2
-rw-r--r--result/relaxng/tutor3_7_err2
-rw-r--r--result/relaxng/tutor6_1_3.err2
-rw-r--r--result/relaxng/tutor6_2_4.err2
-rw-r--r--result/relaxng/tutor6_3_1.err2
-rw-r--r--result/relaxng/tutor7_1_2.err6
-rw-r--r--result/relaxng/tutor7_1_3.err6
-rw-r--r--result/relaxng/tutor7_2_4.err4
-rw-r--r--result/relaxng/tutor7_3_4.err6
-rw-r--r--result/relaxng/tutor7_3_5.err6
-rw-r--r--result/relaxng/tutor8_2_4.err6
-rw-r--r--result/relaxng/tutor8_2_5.err4
-rw-r--r--result/relaxng/tutor8_2_6.err2
-rw-r--r--result/relaxng/tutor9_5_2.err2
-rw-r--r--result/relaxng/tutor9_5_3.err2
-rw-r--r--result/relaxng/tutor9_6_2.err2
-rw-r--r--result/relaxng/tutor9_6_3.err2
32 files changed, 203 insertions, 59 deletions
diff --git a/ChangeLog b/ChangeLog
index f091045f..28d9ce1d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sat Feb 22 00:19:48 CET 2003 Daniel Veillard <daniel@veillard.com>
+
+ * parser.c: fixing some nodeinfo in entities problem raised
+ by Glenn W. Bach
+ * relaxng.c: implemented the first section 7.3 check
+ * result/relaxng/*: updated the results
+
Fri Feb 21 18:12:19 CET 2003 Daniel Veillard <daniel@veillard.com>
* relaxng.c: fixed some problems in the previous commit
diff --git a/parser.c b/parser.c
index cf509fa7..4cfcfe5d 100644
--- a/parser.c
+++ b/parser.c
@@ -9685,6 +9685,10 @@ xmlParseExternalEntityPrivate(xmlDocPtr doc, xmlParserCtxtPtr oldctxt,
ctxt->loadsubset = oldctxt->loadsubset;
ctxt->validate = oldctxt->validate;
ctxt->external = oldctxt->external;
+ ctxt->record_info = oldctxt->record_info;
+ ctxt->node_seq.maximum = oldctxt->node_seq.maximum;
+ ctxt->node_seq.length = oldctxt->node_seq.length;
+ ctxt->node_seq.buffer = oldctxt->node_seq.buffer;
} else {
/*
* Doing validity checking on chunk without context
@@ -9703,6 +9707,9 @@ xmlParseExternalEntityPrivate(xmlDocPtr doc, xmlParserCtxtPtr oldctxt,
}
newDoc = xmlNewDoc(BAD_CAST "1.0");
if (newDoc == NULL) {
+ ctxt->node_seq.maximum = 0;
+ ctxt->node_seq.length = 0;
+ ctxt->node_seq.buffer = NULL;
xmlFreeParserCtxt(ctxt);
return(-1);
}
@@ -9717,6 +9724,9 @@ xmlParseExternalEntityPrivate(xmlDocPtr doc, xmlParserCtxtPtr oldctxt,
if (newDoc->children == NULL) {
if (sax != NULL)
ctxt->sax = oldsax;
+ ctxt->node_seq.maximum = 0;
+ ctxt->node_seq.length = 0;
+ ctxt->node_seq.buffer = NULL;
xmlFreeParserCtxt(ctxt);
newDoc->intSubset = NULL;
newDoc->extSubset = NULL;
@@ -9809,6 +9819,9 @@ xmlParseExternalEntityPrivate(xmlDocPtr doc, xmlParserCtxtPtr oldctxt,
}
if (sax != NULL)
ctxt->sax = oldsax;
+ ctxt->node_seq.maximum = 0;
+ ctxt->node_seq.length = 0;
+ ctxt->node_seq.buffer = NULL;
xmlFreeParserCtxt(ctxt);
newDoc->intSubset = NULL;
newDoc->extSubset = NULL;
diff --git a/relaxng.c b/relaxng.c
index eeb06b8c..84ca17c0 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -234,6 +234,7 @@ typedef xmlRelaxNGInterleaveGroup *xmlRelaxNGInterleaveGroupPtr;
struct _xmlRelaxNGInterleaveGroup {
xmlRelaxNGDefinePtr rule; /* the rule to satisfy */
xmlRelaxNGDefinePtr *defs; /* the array of element definitions */
+ xmlRelaxNGDefinePtr *attrs; /* the array of attributes definitions */
};
/**
@@ -592,6 +593,8 @@ xmlRelaxNGFreePartition(xmlRelaxNGPartitionPtr partitions) {
if (group != NULL) {
if (group->defs != NULL)
xmlFree(group->defs);
+ if (group->attrs != NULL)
+ xmlFree(group->attrs);
xmlFree(group);
}
}
@@ -2094,7 +2097,8 @@ xmlRelaxNGCompareElemDefLists(xmlRelaxNGParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
/**
* xmlRelaxNGGetElements:
* @ctxt: a Relax-NG parser context
- * @def: the interleave definition
+ * @def: the definition definition
+ * @eora: gather elements (0) or attributes (1)
*
* Compute the list of top elements a definition can generate
*
@@ -2102,16 +2106,25 @@ xmlRelaxNGCompareElemDefLists(xmlRelaxNGParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
*/
static xmlRelaxNGDefinePtr *
xmlRelaxNGGetElements(xmlRelaxNGParserCtxtPtr ctxt,
- xmlRelaxNGDefinePtr def) {
+ xmlRelaxNGDefinePtr def,
+ int eora) {
xmlRelaxNGDefinePtr *ret = NULL, parent, cur, tmp;
int len = 0;
int max = 0;
+ /*
+ * Don't run that check in case of error. Infinite recursion
+ * becomes possible.
+ */
+ if (ctxt->nbErrors != 0)
+ return(NULL);
+
parent = NULL;
cur = def;
while (cur != NULL) {
- if ((cur->type == XML_RELAXNG_ELEMENT) ||
- (cur->type == XML_RELAXNG_TEXT)) {
+ if (((eora == 0) && ((cur->type == XML_RELAXNG_ELEMENT) ||
+ (cur->type == XML_RELAXNG_TEXT))) ||
+ ((eora == 1) && (cur->type == XML_RELAXNG_ATTRIBUTE))) {
if (ret == NULL) {
max = 10;
ret = (xmlRelaxNGDefinePtr *)
@@ -2160,7 +2173,7 @@ xmlRelaxNGGetElements(xmlRelaxNGParserCtxtPtr ctxt,
}
}
if (cur == def)
- return(ret);
+ break;
if (cur->next != NULL) {
cur = cur->next;
continue;
@@ -2179,10 +2192,92 @@ xmlRelaxNGGetElements(xmlRelaxNGParserCtxtPtr ctxt,
}
/**
+ * xmlRelaxNGCheckGroupAttrs:
+ * @ctxt: a Relax-NG parser context
+ * @def: the group definition
+ *
+ * Detects violations of rule 7.3
+ */
+static void
+xmlRelaxNGCheckGroupAttrs(xmlRelaxNGParserCtxtPtr ctxt,
+ xmlRelaxNGDefinePtr def) {
+ xmlRelaxNGDefinePtr **list;
+ xmlRelaxNGDefinePtr cur;
+ int nbchild = 0, i, j, ret;
+
+ if ((def == NULL) ||
+ ((def->type != XML_RELAXNG_GROUP) &&
+ (def->type != XML_RELAXNG_ELEMENT)))
+ return;
+
+ /*
+ * Don't run that check in case of error. Infinite recursion
+ * becomes possible.
+ */
+ if (ctxt->nbErrors != 0)
+ return;
+
+ cur = def->attrs;
+ while (cur != NULL) {
+ nbchild++;
+ cur = cur->next;
+ }
+ cur = def->content;
+ while (cur != NULL) {
+ nbchild++;
+ cur = cur->next;
+ }
+
+ list = (xmlRelaxNGDefinePtr **) xmlMalloc(nbchild *
+ sizeof(xmlRelaxNGDefinePtr *));
+ if (list == NULL) {
+ if (ctxt->error != NULL)
+ ctxt->error(ctxt->userData,
+ "Out of memory in group computation\n");
+ ctxt->nbErrors++;
+ return;
+ }
+ i = 0;
+ cur = def->attrs;
+ while (cur != NULL) {
+ list[i] = xmlRelaxNGGetElements(ctxt, cur, 1);
+ i++;
+ cur = cur->next;
+ }
+ cur = def->content;
+ while (cur != NULL) {
+ list[i] = xmlRelaxNGGetElements(ctxt, cur, 1);
+ i++;
+ cur = cur->next;
+ }
+
+ for (i = 0;i < nbchild;i++) {
+ if (list[i] == NULL)
+ continue;
+ for (j = 0;j < i;j++) {
+ if (list[j] == NULL)
+ continue;
+ ret = xmlRelaxNGCompareElemDefLists(ctxt, list[i], list[j]);
+ if (ret == 0) {
+ if (ctxt->error != NULL)
+ ctxt->error(ctxt->userData,
+ "Attributes conflicts in group\n");
+ ctxt->nbErrors++;
+ }
+ }
+ }
+ for (i = 0;i < nbchild;i++) {
+ if (list[i] != NULL)
+ xmlFree(list[i]);
+ }
+ xmlFree(list);
+}
+
+/**
* xmlRelaxNGComputeInterleaves:
* @def: the interleave definition
* @ctxt: a Relax-NG parser context
- * @node: the data node.
+ * @name: the definition name
*
* A lot of work for preprocessing interleave definitions
* is potentially needed to get a decent execution speed at runtime
@@ -2199,7 +2294,6 @@ xmlRelaxNGComputeInterleaves(xmlRelaxNGDefinePtr def,
xmlChar *name ATTRIBUTE_UNUSED) {
xmlRelaxNGDefinePtr cur;
- xmlRelaxNGDefinePtr *list = NULL;
xmlRelaxNGPartitionPtr partitions = NULL;
xmlRelaxNGInterleaveGroupPtr *groups = NULL;
xmlRelaxNGInterleaveGroupPtr group;
@@ -2207,6 +2301,13 @@ xmlRelaxNGComputeInterleaves(xmlRelaxNGDefinePtr def,
int nbgroups = 0;
int nbchild = 0;
+ /*
+ * Don't run that check in case of error. Infinite recursion
+ * becomes possible.
+ */
+ if (ctxt->nbErrors != 0)
+ return;
+
#ifdef DEBUG_INTERLEAVE
xmlGenericError(xmlGenericErrorContext,
"xmlRelaxNGComputeInterleaves(%s)\n",
@@ -2232,11 +2333,11 @@ xmlRelaxNGComputeInterleaves(xmlRelaxNGDefinePtr def,
if (groups[nbgroups] == NULL)
goto error;
groups[nbgroups]->rule = cur;
- groups[nbgroups]->defs = xmlRelaxNGGetElements(ctxt, cur);
+ groups[nbgroups]->defs = xmlRelaxNGGetElements(ctxt, cur, 0);
+ groups[nbgroups]->attrs = xmlRelaxNGGetElements(ctxt, cur, 1);
nbgroups++;
cur = cur->next;
}
- list = NULL;
#ifdef DEBUG_INTERLEAVE
xmlGenericError(xmlGenericErrorContext, " %d groups\n", nbgroups);
#endif
@@ -2262,12 +2363,20 @@ xmlRelaxNGComputeInterleaves(xmlRelaxNGDefinePtr def,
"Element or text conflicts in interleave\n");
ctxt->nbErrors++;
}
+ ret = xmlRelaxNGCompareElemDefLists(ctxt, group->attrs,
+ groups[j]->attrs);
+ if (ret == 0) {
+ if (ctxt->error != NULL)
+ ctxt->error(ctxt->userData,
+ "Attributes conflicts in interleave\n");
+ ctxt->nbErrors++;
+ }
}
}
partitions->groups = groups;
/*
- * Free Up the child list, and save the partition list back in the def
+ * and save the partition list back in the def
*/
def->data = partitions;
return;
@@ -2277,8 +2386,6 @@ error:
ctxt->error(ctxt->userData,
"Out of memory in interleave computation\n");
ctxt->nbErrors++;
- if (list == NULL)
- xmlFree(list);
if (groups != NULL) {
for (i = 0;i < nbgroups;i++)
if (groups[i] != NULL) {
@@ -4077,6 +4184,10 @@ xmlRelaxNGCheckRules(xmlRelaxNGParserCtxtPtr ctxt,
ret = (xmlRelaxNGContentType) cur->depth + 15;
}
} else if (cur->type == XML_RELAXNG_ELEMENT) {
+ /*
+ * The 7.3 Attribute derivation rule for groups is plugged there
+ */
+ xmlRelaxNGCheckGroupAttrs(ctxt, cur);
if (flags & XML_RELAXNG_IN_DATAEXCEPT) {
if (ctxt->error != NULL)
ctxt->error(ctxt->userData,
@@ -4214,6 +4325,10 @@ xmlRelaxNGCheckRules(xmlRelaxNGParserCtxtPtr ctxt,
else
nflags = flags;
ret = xmlRelaxNGCheckRules(ctxt, cur->content, nflags, cur->type);
+ /*
+ * The 7.3 Attribute derivation rule for groups is plugged there
+ */
+ xmlRelaxNGCheckGroupAttrs(ctxt, cur);
} else if (cur->type == XML_RELAXNG_INTERLEAVE) {
if (flags & XML_RELAXNG_IN_LIST) {
if (ctxt->error != NULL)
@@ -4955,6 +5070,9 @@ xmlRelaxNGCleanupTree(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr root) {
xmlFree(name);
}
}
+ /*
+ * 4.16
+ */
if (xmlStrEqual(cur->name, BAD_CAST "nsName")) {
if (ctxt->flags & XML_RELAXNG_IN_NSEXCEPT) {
if (ctxt->error != NULL)
@@ -4967,6 +5085,9 @@ xmlRelaxNGCleanupTree(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr root) {
(cur != root)) {
int oldflags = ctxt->flags;
+ /*
+ * 4.16
+ */
if ((cur->parent != NULL) &&
(xmlStrEqual(cur->parent->name, BAD_CAST "anyName"))) {
ctxt->flags |= XML_RELAXNG_IN_ANYEXCEPT;
@@ -4981,6 +5102,9 @@ xmlRelaxNGCleanupTree(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr root) {
goto skip_children;
}
} else if (xmlStrEqual(cur->name, BAD_CAST "anyName")) {
+ /*
+ * 4.16
+ */
if (ctxt->flags & XML_RELAXNG_IN_ANYEXCEPT) {
if (ctxt->error != NULL)
ctxt->error(ctxt->userData,
diff --git a/result/relaxng/spec1_err b/result/relaxng/spec1_err
index 9189fd81..51c6cf53 100644
--- a/result/relaxng/spec1_err
+++ b/result/relaxng/spec1_err
@@ -1 +1 @@
-Unimplemented block at relaxng.c:6304
+Unimplemented block at relaxng.c:6428
diff --git a/result/relaxng/tutor10_1_4.err b/result/relaxng/tutor10_1_4.err
index 15fd907d..a8fa363a 100644
--- a/result/relaxng/tutor10_1_4.err
+++ b/result/relaxng/tutor10_1_4.err
@@ -1,4 +1,4 @@
-error detected at relaxng.c:6488
+error detected at relaxng.c:6612
Expecting a namespace for element foo
-error detected at relaxng.c:7070
+error detected at relaxng.c:7194
extra data on the document
diff --git a/result/relaxng/tutor10_1_5.err b/result/relaxng/tutor10_1_5.err
index c919e68e..839d3552 100644
--- a/result/relaxng/tutor10_1_5.err
+++ b/result/relaxng/tutor10_1_5.err
@@ -1,4 +1,4 @@
-error detected at relaxng.c:6493
+error detected at relaxng.c:6617
Expecting element foo has wrong namespace: expecting http://www.example.com
-error detected at relaxng.c:7070
+error detected at relaxng.c:7194
extra data on the document
diff --git a/result/relaxng/tutor10_1_6.err b/result/relaxng/tutor10_1_6.err
index c919e68e..839d3552 100644
--- a/result/relaxng/tutor10_1_6.err
+++ b/result/relaxng/tutor10_1_6.err
@@ -1,4 +1,4 @@
-error detected at relaxng.c:6493
+error detected at relaxng.c:6617
Expecting element foo has wrong namespace: expecting http://www.example.com
-error detected at relaxng.c:7070
+error detected at relaxng.c:7194
extra data on the document
diff --git a/result/relaxng/tutor10_2_3.err b/result/relaxng/tutor10_2_3.err
index 75971011..2d06a903 100644
--- a/result/relaxng/tutor10_2_3.err
+++ b/result/relaxng/tutor10_2_3.err
@@ -1,4 +1,4 @@
-error detected at relaxng.c:6505
+error detected at relaxng.c:6629
Expecting no namespace for element foo
-error detected at relaxng.c:7070
+error detected at relaxng.c:7194
extra data on the document
diff --git a/result/relaxng/tutor10_2_4.err b/result/relaxng/tutor10_2_4.err
index 75971011..2d06a903 100644
--- a/result/relaxng/tutor10_2_4.err
+++ b/result/relaxng/tutor10_2_4.err
@@ -1,4 +1,4 @@
-error detected at relaxng.c:6505
+error detected at relaxng.c:6629
Expecting no namespace for element foo
-error detected at relaxng.c:7070
+error detected at relaxng.c:7194
extra data on the document
diff --git a/result/relaxng/tutor10_7_3.err b/result/relaxng/tutor10_7_3.err
index 2bdbe5e9..975e57ad 100644
--- a/result/relaxng/tutor10_7_3.err
+++ b/result/relaxng/tutor10_7_3.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element addressBook: card
diff --git a/result/relaxng/tutor10_8_3.err b/result/relaxng/tutor10_8_3.err
index 2bdbe5e9..975e57ad 100644
--- a/result/relaxng/tutor10_8_3.err
+++ b/result/relaxng/tutor10_8_3.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element addressBook: card
diff --git a/result/relaxng/tutor11_2_2.err b/result/relaxng/tutor11_2_2.err
index 3b346fe3..62796e91 100644
--- a/result/relaxng/tutor11_2_2.err
+++ b/result/relaxng/tutor11_2_2.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6712
+error detected at relaxng.c:6836
Invalid attribute foo for element card
diff --git a/result/relaxng/tutor11_2_3.err b/result/relaxng/tutor11_2_3.err
index 9e2730b9..09099f9e 100644
--- a/result/relaxng/tutor11_2_3.err
+++ b/result/relaxng/tutor11_2_3.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6712
+error detected at relaxng.c:6836
Invalid attribute b for element card
diff --git a/result/relaxng/tutor12_1_err b/result/relaxng/tutor12_1_err
index 9189fd81..51c6cf53 100644
--- a/result/relaxng/tutor12_1_err
+++ b/result/relaxng/tutor12_1_err
@@ -1 +1 @@
-Unimplemented block at relaxng.c:6304
+Unimplemented block at relaxng.c:6428
diff --git a/result/relaxng/tutor3_2_1.err b/result/relaxng/tutor3_2_1.err
index 9ecdb131..6205f588 100644
--- a/result/relaxng/tutor3_2_1.err
+++ b/result/relaxng/tutor3_2_1.err
@@ -1,4 +1,4 @@
-error detected at relaxng.c:6480
+error detected at relaxng.c:6604
Expecting element name, got email
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element card: email
diff --git a/result/relaxng/tutor3_5_2.err b/result/relaxng/tutor3_5_2.err
index 2bdbe5e9..975e57ad 100644
--- a/result/relaxng/tutor3_5_2.err
+++ b/result/relaxng/tutor3_5_2.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element addressBook: card
diff --git a/result/relaxng/tutor3_7_err b/result/relaxng/tutor3_7_err
index dedbc909..5610b355 100644
--- a/result/relaxng/tutor3_7_err
+++ b/result/relaxng/tutor3_7_err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:7070
+error detected at relaxng.c:7194
extra data on the document
diff --git a/result/relaxng/tutor6_1_3.err b/result/relaxng/tutor6_1_3.err
index e5686374..c438e30e 100644
--- a/result/relaxng/tutor6_1_3.err
+++ b/result/relaxng/tutor6_1_3.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6712
+error detected at relaxng.c:6836
Invalid attribute preferredFormat for element card
diff --git a/result/relaxng/tutor6_2_4.err b/result/relaxng/tutor6_2_4.err
index b76748bc..5c96ccf2 100644
--- a/result/relaxng/tutor6_2_4.err
+++ b/result/relaxng/tutor6_2_4.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element preferredFormat: text
diff --git a/result/relaxng/tutor6_3_1.err b/result/relaxng/tutor6_3_1.err
index e5686374..c438e30e 100644
--- a/result/relaxng/tutor6_3_1.err
+++ b/result/relaxng/tutor6_3_1.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6712
+error detected at relaxng.c:6836
Invalid attribute preferredFormat for element card
diff --git a/result/relaxng/tutor7_1_2.err b/result/relaxng/tutor7_1_2.err
index d2ee9ca2..f378bcd4 100644
--- a/result/relaxng/tutor7_1_2.err
+++ b/result/relaxng/tutor7_1_2.err
@@ -1,6 +1,6 @@
-error detected at relaxng.c:5591
+error detected at relaxng.c:5715
Internal: failed to validate type float
-error detected at relaxng.c:7002
+error detected at relaxng.c:7126
error validating list
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element vector: text
diff --git a/result/relaxng/tutor7_1_3.err b/result/relaxng/tutor7_1_3.err
index b2108a45..0ecd7ffd 100644
--- a/result/relaxng/tutor7_1_3.err
+++ b/result/relaxng/tutor7_1_3.err
@@ -1,6 +1,6 @@
-error detected at relaxng.c:5831
+error detected at relaxng.c:5955
Extra data in list: 5.6
-error detected at relaxng.c:7002
+error detected at relaxng.c:7126
error validating list
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element vector: text
diff --git a/result/relaxng/tutor7_2_4.err b/result/relaxng/tutor7_2_4.err
index 6f668cb2..2cc782d0 100644
--- a/result/relaxng/tutor7_2_4.err
+++ b/result/relaxng/tutor7_2_4.err
@@ -1,4 +1,4 @@
-error detected at relaxng.c:5591
+error detected at relaxng.c:5715
Internal: failed to validate type double
-error detected at relaxng.c:7002
+error detected at relaxng.c:7126
error validating list
diff --git a/result/relaxng/tutor7_3_4.err b/result/relaxng/tutor7_3_4.err
index 22724feb..b3754e78 100644
--- a/result/relaxng/tutor7_3_4.err
+++ b/result/relaxng/tutor7_3_4.err
@@ -1,6 +1,6 @@
-error detected at relaxng.c:5831
+error detected at relaxng.c:5955
Extra data in list: 5.6
-error detected at relaxng.c:7002
+error detected at relaxng.c:7126
error validating list
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element path: text
diff --git a/result/relaxng/tutor7_3_5.err b/result/relaxng/tutor7_3_5.err
index 122642b9..be47182a 100644
--- a/result/relaxng/tutor7_3_5.err
+++ b/result/relaxng/tutor7_3_5.err
@@ -1,6 +1,6 @@
-error detected at relaxng.c:5591
+error detected at relaxng.c:5715
Internal: failed to validate type double
-error detected at relaxng.c:7002
+error detected at relaxng.c:7126
error validating list
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element path: text
diff --git a/result/relaxng/tutor8_2_4.err b/result/relaxng/tutor8_2_4.err
index 3eb899c4..da7515fd 100644
--- a/result/relaxng/tutor8_2_4.err
+++ b/result/relaxng/tutor8_2_4.err
@@ -1,4 +1,4 @@
-Unimplemented block at relaxng.c:6304
-Unimplemented block at relaxng.c:6304
-error detected at relaxng.c:6699
+Unimplemented block at relaxng.c:6428
+Unimplemented block at relaxng.c:6428
+error detected at relaxng.c:6823
Extra content for element head: meta
diff --git a/result/relaxng/tutor8_2_5.err b/result/relaxng/tutor8_2_5.err
index cef28344..3d1a4bde 100644
--- a/result/relaxng/tutor8_2_5.err
+++ b/result/relaxng/tutor8_2_5.err
@@ -1,4 +1,4 @@
-error detected at relaxng.c:6640
+error detected at relaxng.c:6764
Expecting an element, got empty
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element head: meta
diff --git a/result/relaxng/tutor8_2_6.err b/result/relaxng/tutor8_2_6.err
index 6fade87a..71429851 100644
--- a/result/relaxng/tutor8_2_6.err
+++ b/result/relaxng/tutor8_2_6.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element head: base
diff --git a/result/relaxng/tutor9_5_2.err b/result/relaxng/tutor9_5_2.err
index 2bdbe5e9..975e57ad 100644
--- a/result/relaxng/tutor9_5_2.err
+++ b/result/relaxng/tutor9_5_2.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element addressBook: card
diff --git a/result/relaxng/tutor9_5_3.err b/result/relaxng/tutor9_5_3.err
index 2bdbe5e9..975e57ad 100644
--- a/result/relaxng/tutor9_5_3.err
+++ b/result/relaxng/tutor9_5_3.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element addressBook: card
diff --git a/result/relaxng/tutor9_6_2.err b/result/relaxng/tutor9_6_2.err
index 2bdbe5e9..975e57ad 100644
--- a/result/relaxng/tutor9_6_2.err
+++ b/result/relaxng/tutor9_6_2.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element addressBook: card
diff --git a/result/relaxng/tutor9_6_3.err b/result/relaxng/tutor9_6_3.err
index 2bdbe5e9..975e57ad 100644
--- a/result/relaxng/tutor9_6_3.err
+++ b/result/relaxng/tutor9_6_3.err
@@ -1,2 +1,2 @@
-error detected at relaxng.c:6699
+error detected at relaxng.c:6823
Extra content for element addressBook: card