aboutsummaryrefslogtreecommitdiffstats
path: root/xmlregexp.c
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@redhat.com>2009-09-23 18:28:43 +0200
committerDaniel Veillard <veillard@redhat.com>2009-09-23 18:28:43 +0200
commit9332b48f16123cac16a207425b3a0206e5da35c1 (patch)
tree75d01cc889ef92158bebf4b3adfd4e30f9a5a06e /xmlregexp.c
parent9d3d141c412baa5c713ad3df48f1a4d179e07b05 (diff)
downloadandroid_external_libxml2-9332b48f16123cac16a207425b3a0206e5da35c1.tar.gz
android_external_libxml2-9332b48f16123cac16a207425b3a0206e5da35c1.tar.bz2
android_external_libxml2-9332b48f16123cac16a207425b3a0206e5da35c1.zip
Fix a Relaxng bug raised by libvirt test suite
* xmlregexp.c: other fixes in 2.7.4 raised this internal error when comparing ranges, this affects among others detection of the determinism * test/relaxng/libvirt* result/relaxng/libvirt*: add a test case based on libvirt schemas and tests
Diffstat (limited to 'xmlregexp.c')
-rw-r--r--xmlregexp.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/xmlregexp.c b/xmlregexp.c
index a10bf6b2..2a501ad1 100644
--- a/xmlregexp.c
+++ b/xmlregexp.c
@@ -2095,12 +2095,13 @@ xmlFACompareRanges(xmlRegRangePtr range1, xmlRegRangePtr range2) {
(range2->type == XML_REGEXP_EPSILON)) {
return(0);
} else if (range1->type == range2->type) {
- if ((range1->type != XML_REGEXP_CHARVAL) ||
- (range1->end < range2->start) ||
- (range2->end < range1->start))
- ret = 1;
- else
+ if (range1->type != XML_REGEXP_CHARVAL)
+ ret = 1;
+ else if ((range1->end < range2->start) ||
+ (range2->end < range1->start))
ret = 0;
+ else
+ ret = 1;
} else if (range1->type == XML_REGEXP_CHARVAL) {
int codepoint;
int neg = 0;