diff options
author | Daniel Veillard <veillard@redhat.com> | 2009-09-23 18:28:43 +0200 |
---|---|---|
committer | Daniel Veillard <veillard@redhat.com> | 2009-09-23 18:28:43 +0200 |
commit | 9332b48f16123cac16a207425b3a0206e5da35c1 (patch) | |
tree | 75d01cc889ef92158bebf4b3adfd4e30f9a5a06e /xmlregexp.c | |
parent | 9d3d141c412baa5c713ad3df48f1a4d179e07b05 (diff) | |
download | android_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.c | 11 |
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; |