From dc99df936c74b6ced82904086544fec365d1f219 Mon Sep 17 00:00:00 2001 From: "William M. Brack" Date: Sat, 27 Dec 2003 01:54:25 +0000 Subject: [PATCH] fixed xmlFAParseCharRange for Unicode ranges with patch from Charles * xmlregexp.c: fixed xmlFAParseCharRange for Unicode ranges with patch from Charles Bozeman. --- ChangeLog | 5 +++++ xmlregexp.c | 12 +++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index bc6f9385..0a03faa9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Dec 27 09:53:06 HKT 2003 William Brack + + * xmlregexp.c: fixed xmlFAParseCharRange for Unicode ranges + with patch from Charles Bozeman. + Fri Dec 26 14:03:41 HKT 2003 William Brack * xmlregexp.c: fixed problem causing segfault on validation error diff --git a/xmlregexp.c b/xmlregexp.c index 784feaf1..08b51d8a 100644 --- a/xmlregexp.c +++ b/xmlregexp.c @@ -3533,7 +3533,7 @@ xmlFAParseCharRef(xmlRegParserCtxtPtr ctxt) { */ static void xmlFAParseCharRange(xmlRegParserCtxtPtr ctxt) { - int cur; + int cur, len; int start = -1; int end = -1; @@ -3560,13 +3560,14 @@ xmlFAParseCharRange(xmlRegParserCtxtPtr ctxt) { return; } end = start; + len = 1; } else if ((cur != 0x5B) && (cur != 0x5D)) { - end = start = cur; + end = start = CUR_SCHAR(ctxt->cur, len); } else { ERROR("Expecting a char range"); return; } - NEXT; + NEXTL(len); if (start == '-') { return; } @@ -3593,13 +3594,14 @@ xmlFAParseCharRange(xmlRegParserCtxtPtr ctxt) { ERROR("Invalid escape value"); return; } + len = 1; } else if ((cur != 0x5B) && (cur != 0x5D)) { - end = cur; + end = CUR_SCHAR(ctxt->cur, len); } else { ERROR("Expecting the end of a char range"); return; } - NEXT; + NEXTL(len); /* TODO check that the values are acceptable character ranges for XML */ if (end < start) { ERROR("End of range is before start of range");