+Mon Mar 4 12:57:21 CET 2002 Daniel Veillard <daniel@veillard.com>
+
+ * libxslt/pattern.c: fixed bug #73363, bad tokenization of
+ pattern
+
Mon Mar 4 12:01:34 CET 2002 Daniel Veillard <daniel@veillard.com>
* libexslt/date.c: patch from Charles Bozeman for the exslt date
xsltTransformContextPtr runtime) {
xsltParserContextPtr ctxt = NULL;
xsltCompMatchPtr element, first = NULL, previous = NULL;
- int current, start, end;
+ int current, start, end, level;
if (pattern == NULL) {
xsltPrintErrorContext(NULL, NULL, node); /* TODO */
while (IS_BLANK(pattern[current]))
current++;
end = current;
- while ((pattern[end] != 0) && (pattern[end] != '|'))
+ level = 0;
+ while ((pattern[end] != 0) && ((pattern[end] != '|') || (level != 0))) {
+ if (pattern[end] == '[')
+ level++;
+ else if (pattern[end] == ']')
+ level--;
+ else if (pattern[end] == '\'') {
+ end++;
+ while ((pattern[end] != 0) && (pattern[end] != '\''))
+ end++;
+ } else if (pattern[end] == '"') {
+ end++;
+ while ((pattern[end] != 0) && (pattern[end] != '"'))
+ end++;
+ }
end++;
+ }
if (current == end) {
xsltPrintErrorContext(NULL, NULL, node); /* TODO */
xsltGenericError(xsltGenericErrorContext,