1
0
mirror of https://gitlab.gnome.org/GNOME/libxslt synced 2026-01-07 21:58:22 +03:00

Fixing Bug 116517

This commit is contained in:
William M. Brack
2003-08-03 11:48:43 +00:00
parent 7d6a91ecb5
commit 52f96f5ba1
7 changed files with 57 additions and 0 deletions

View File

@@ -1,3 +1,11 @@
Sun Aug 3 19:46:42 HTK 2003 William Brack <wbrack@mmm.com.hk>
Fixed bug 116517 - handling of '{' and '}'
* templates.c: added checks for escaping and balancing of
curly brackets
* tests/general/Makefile.am tests/docs/Makefile.am:
Added test case (bug-126) to regression suite.
Sun Aug 3 15:50:51 HKT 2003 William Brack <wbrack@mmm.com.hk>
Fixed bug 117552 - sort with multiple keys

View File

@@ -247,11 +247,20 @@ xsltAttrTemplateValueProcessNode(xsltTransformContextPtr ctxt,
cur = str;
while (*cur != 0) {
if (*cur == '{') {
if (*(cur+1) == '{') { /* escaped '{' */
cur++;
ret = xmlStrncat(ret, str, cur - str);
cur++;
str = cur;
continue;
}
ret = xmlStrncat(ret, str, cur - str);
str = cur;
cur++;
while ((*cur != 0) && (*cur != '}')) cur++;
if (*cur == 0) {
xsltTransformError(ctxt, NULL, NULL,
"xsltAttrTemplateValueProcessNode: unmatched '{'\n");
ret = xmlStrncat(ret, str, cur - str);
return(ret);
}
@@ -288,6 +297,17 @@ xsltAttrTemplateValueProcessNode(xsltTransformContextPtr ctxt,
}
cur++;
str = cur;
} else if (*cur == '}') {
cur++;
if (*cur == '}') { /* escaped '}' */
ret = xmlStrncat(ret, str, cur - str);
cur++;
str = cur;
continue;
} else {
xsltTransformError(ctxt, NULL, NULL,
"xsltAttrTemplateValueProcessNode: unmatched '}'\n");
}
} else
cur++;
}

View File

@@ -125,6 +125,7 @@ EXTRA_DIST = \
bug-123.xml \
bug-124.xml \
bug-125.xml \
bug-126.xml \
character.xml \
array.xml \
items.xml

1
tests/docs/bug-126.xml Normal file
View File

@@ -0,0 +1 @@
<doc/>

View File

@@ -130,6 +130,7 @@ EXTRA_DIST = \
bug-123.out bug-123.xsl \
bug-124.out bug-124.xsl \
bug-125.out bug-125.xsl \
bug-126.out bug-126.xsl \
character.out character.xsl \
character2.out character2.xsl \
itemschoose.out itemschoose.xsl \

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<foo attr="$x"/> Expect '$x'
<foo attr="val"/> Expect 'val'
<foo attr="{$x"/> Expect 'bracket $x'
<foo attr="$x}"/> Expect '$x bracket'
<foo attr="{$x}"/> Expect 'bracket $x bracket'
<foo attr="{val}"/> Expect 'bracket val bracket'

17
tests/general/bug-126.xsl Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:variable name="x" select="'val'" />
<xsl:template match="/">
<xsl:text>
</xsl:text>
<foo attr="$x"/> Expect '$x'
<foo attr="{$x}"/> Expect 'val'
<foo attr="{{$x"/> Expect 'bracket $x'
<foo attr="$x}}"/> Expect '$x bracket'
<foo attr="{{$x}}"/> Expect 'bracket $x bracket'
<foo attr="{{{$x}}}"/> Expect 'bracket val bracket'
</xsl:template>
</xsl:stylesheet>