diff --git a/result/relaxng/libvirt_0 b/result/relaxng/libvirt_0
new file mode 100644
index 00000000..e69de29b
diff --git a/result/relaxng/libvirt_0.err b/result/relaxng/libvirt_0.err
new file mode 100644
index 00000000..29535b86
--- /dev/null
+++ b/result/relaxng/libvirt_0.err
@@ -0,0 +1 @@
+./test/relaxng/libvirt_0.xml validates
diff --git a/result/relaxng/libvirt_err b/result/relaxng/libvirt_err
new file mode 100644
index 00000000..4acf3edf
--- /dev/null
+++ b/result/relaxng/libvirt_err
@@ -0,0 +1 @@
+./test/relaxng/libvirt.rng validates
diff --git a/result/relaxng/libvirt_valid b/result/relaxng/libvirt_valid
new file mode 100644
index 00000000..e69de29b
diff --git a/test/relaxng/libvirt.rng b/test/relaxng/libvirt.rng
new file mode 100644
index 00000000..c1f586e7
--- /dev/null
+++ b/test/relaxng/libvirt.rng
@@ -0,0 +1,1258 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dynamic
+ static
+
+
+
+
+
+
+
+
+
+
+ xen
+ kvm
+ kqemu
+ qemu
+ lxc
+ openvz
+ test
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ i686
+ x86_64
+ ia64
+
+
+
+
+
+
+ xenpv
+ xenner
+
+
+
+
+ xen
+ linux
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hvm
+
+
+
+
+
+
+ i686
+ x86_64
+
+
+
+
+ xenfv
+ pc
+ isapc
+
+
+
+
+
+
+
+ mips
+
+
+ mips
+
+
+
+
+
+
+ sparc
+
+
+ sun4m
+
+
+
+
+
+
+ ppc
+
+
+
+ g3beige
+ mac99
+ prep
+
+
+
+
+
+
+
+ exe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ localtime
+ utc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hd
+ fd
+ cdrom
+ network
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ floppy
+ disk
+ cdrom
+
+
+
+
+
+
+ file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ block
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ide
+ fdc
+ scsi
+ virtio
+ xen
+ usb
+ uml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ none
+ writeback
+ writethrough
+
+
+
+
+
+
+
+
+ file
+
+
+
+
+
+
+
+
+
+
+
+
+
+ block
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mount
+
+
+
+
+
+
+
+
+
+
+
+
+
+ template
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ bridge
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ethernet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ network
+
+
+
+
+
+
+
+
+
+
+
+
+
+ user
+
+
+
+
+
+
+
+ internal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ sdl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ yes
+ no
+
+
+
+
+
+
+ vnc
+
+
+
+
+
+
+
+
+
+ yes
+ no
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ rdp
+
+
+
+
+
+
+
+
+
+ yes
+ no
+
+
+
+
+
+
+ yes
+ no
+
+
+
+
+
+
+ yes
+ no
+
+
+
+
+
+
+
+
+
+
+
+ desktop
+
+
+
+
+
+
+
+
+
+ yes
+ no
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ vga
+ cirrus
+ vmvga
+ xen
+ vbox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ yes
+ no
+
+
+
+
+
+
+ yes
+ no
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ destroy
+ restart
+ preserve
+ rename-restart
+
+
+
+
+
+
+ dev
+ file
+ pipe
+ unix
+ tcp
+ udp
+ null
+ stdio
+ vc
+ pty
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ sb16
+ es1370
+ pcspk
+ ac97
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tablet
+ mouse
+
+
+
+
+
+ ps2
+ usb
+ xen
+
+
+
+
+
+
+
+
+
+
+ subsystem
+ capabilities
+
+
+
+
+ usb
+ pci
+
+
+
+
+ yes
+ no
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [0-9]+
+
+
+
+
+ [0-9]+
+ 1
+
+
+
+
+ -1
+
+
+
+
+ [0-9]+
+ 4000
+
+
+
+
+ [A-Za-z0-9_\.\+\-&:/]+
+
+
+
+
+ [A-Za-z0-9_\.\+\-]+
+
+
+
+
+ [a-zA-Z0-9_\+\-]+
+
+
+
+
+
+ [a-fA-F0-9]{32}
+
+
+ [a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}
+
+
+
+
+
+ [a-zA-Z0-9_\.\+\-&/%]+
+
+
+
+
+ /[a-zA-Z0-9_\.\+\-&/%]+
+
+
+
+
+ /[a-zA-Z0-9_\.\+\-&/%]*
+
+
+
+
+ /[a-zA-Z0-9_\+\-/%]+
+
+
+
+
+ [a-zA-Z0-9_\.\-:/]+
+
+
+
+
+ ([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}
+
+
+
+
+ ([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9]
+
+
+
+
+ (0x)?[0-9a-fA-F]{1,4}
+
+
+
+
+ (0x)?[0-9a-fA-F]{1,3}
+
+
+
+
+ (0x)?[0-9a-fA-F]{1,4}
+
+
+
+
+ (0x)?[0-9a-fA-F]{1,2}
+
+
+
+
+ (0x)?[0-1]?[0-9a-fA-F]
+
+
+
+
+ (0x)?[0-7]
+
+
+
diff --git a/test/relaxng/libvirt_0.xml b/test/relaxng/libvirt_0.xml
new file mode 100644
index 00000000..c17d9d5f
--- /dev/null
+++ b/test/relaxng/libvirt_0.xml
@@ -0,0 +1,23 @@
+
+ pvtest
+ 596a5d2171f48fb2e068e2386a5c413e
+
+ linux
+ /var/lib/xen/vmlinuz.2Dn2YT
+ /var/lib/xen/initrd.img.0u-Vhq
+ method=http://download.fedora.devel.redhat.com/pub/fedora/linux/core/test/5.91/x86_64/os
+
+ 430080
+ 2
+ destroy
+ destroy
+ destroy
+
+
+
+
+
+
+
+
+
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;