aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--relaxng.c4
-rw-r--r--result/relaxng/compare0_00
-rw-r--r--result/relaxng/compare0_0.err3
-rw-r--r--result/relaxng/compare0_err1
-rw-r--r--result/relaxng/compare0_valid0
-rw-r--r--test/relaxng/compare0.rng8
-rw-r--r--test/relaxng/compare0_0.xml3
8 files changed, 23 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index efee4d0b..d058d60d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Jun 13 13:39:43 CEST 2005 Daniel Veillard <daniel@veillard.com>
+
+ * relaxng.c: fixed a bug exposed by Rob Richards in the mailing-list
+ * result//compare0* test//compare0*: added the regression test in
+ the suite as this went unnoticed !
+
Wed Jun 9 11:07:42 PDT 2005 William Brack <wbrack@mmm.com.hk>
* pattern.c, xpath.c, include/libxml/pattern.h: Further
diff --git a/relaxng.c b/relaxng.c
index cd280343..41c899b5 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -2573,11 +2573,11 @@ xmlRelaxNGSchemaTypeCompare(void *data ATTRIBUTE_UNUSED,
}
ret = xmlSchemaValPredefTypeNode(typ, value2, &res2, ctxt2);
if (ret != 0) {
- xmlSchemaFreeValue(res1);
+ if ((comp1 == NULL) && (res1 != NULL))
+ xmlSchemaFreeValue(res1);
return (-1);
}
if (res1 == NULL) {
- xmlSchemaFreeValue(res1);
return (-1);
}
ret = xmlSchemaCompareValues(res1, res2);
diff --git a/result/relaxng/compare0_0 b/result/relaxng/compare0_0
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/result/relaxng/compare0_0
diff --git a/result/relaxng/compare0_0.err b/result/relaxng/compare0_0.err
new file mode 100644
index 00000000..9328f273
--- /dev/null
+++ b/result/relaxng/compare0_0.err
@@ -0,0 +1,3 @@
+./test/relaxng/compare0_0.xml:2: element number: Relax-NG validity error : failed to compare type integer
+./test/relaxng/compare0_0.xml:2: element number: Relax-NG validity error : Element number failed to validate attributes
+./test/relaxng/compare0_0.xml fails to validate
diff --git a/result/relaxng/compare0_err b/result/relaxng/compare0_err
new file mode 100644
index 00000000..543d7349
--- /dev/null
+++ b/result/relaxng/compare0_err
@@ -0,0 +1 @@
+./test/relaxng/compare0.rng validates
diff --git a/result/relaxng/compare0_valid b/result/relaxng/compare0_valid
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/result/relaxng/compare0_valid
diff --git a/test/relaxng/compare0.rng b/test/relaxng/compare0.rng
new file mode 100644
index 00000000..a0446c8d
--- /dev/null
+++ b/test/relaxng/compare0.rng
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<element name="number" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <attribute name="att1">
+ <value type="integer"> 1 </value>
+ </attribute>
+</element>
+
diff --git a/test/relaxng/compare0_0.xml b/test/relaxng/compare0_0.xml
new file mode 100644
index 00000000..6a74b2f3
--- /dev/null
+++ b/test/relaxng/compare0_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" ?>
+<number att1="x"></number>
+