diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | libxslt/transform.c | 6 | ||||
-rw-r--r-- | tests/docs/Makefile.am | 1 | ||||
-rw-r--r-- | tests/docs/bug-164.xml | 4 | ||||
-rw-r--r-- | tests/general/Makefile.am | 1 | ||||
-rw-r--r-- | tests/general/bug-164.out | 4 | ||||
-rw-r--r-- | tests/general/bug-164.xsl | 13 |
7 files changed, 35 insertions, 1 deletions
@@ -1,3 +1,10 @@ +Fri Nov 17 09:53:08 HKT 2006 William Brack <wbrack@mmm.com.hk> + + * libxslt/transform.c: fixed problem with entity handling + within xsltCopyAttrListNoOverwrite (#352907) + * tests/general/bug-164.xsl, tests/general/bug-164.out, + tests/docs/bug-164.oxml: added a regression test for this + Thu Oct 26 15:31:01 CEST 2006 Daniel Veillard <daniel@veillard.com> * NEWS configure.in doc//*: preparing release of libxslt-1.1.18, diff --git a/libxslt/transform.c b/libxslt/transform.c index cde84e15..7c0461d1 100644 --- a/libxslt/transform.c +++ b/libxslt/transform.c @@ -1074,8 +1074,12 @@ xsltCopyAttrListNoOverwrite(xsltTransformContextPtr ctxt, } else copyNs = NULL; } + /* + * If attribute has a value, we need to copy it (watching out + * for possible entities) + */ if (attr->children) - value = xmlNodeListGetString(attr->doc, attr->children, 1); + value = xmlNodeListGetString(attr->doc, attr->children, 0); /* * REVISIT: I think xmlNewDocProp() is the only attr function * which does not eval if the attr is of type ID. This is good, diff --git a/tests/docs/Makefile.am b/tests/docs/Makefile.am index 938b2167..a801453e 100644 --- a/tests/docs/Makefile.am +++ b/tests/docs/Makefile.am @@ -162,6 +162,7 @@ EXTRA_DIST = \ bug-160.xml \ bug-161.xml \ bug-163.xml \ + bug-164.xml \ character.xml \ array.xml \ items.xml diff --git a/tests/docs/bug-164.xml b/tests/docs/bug-164.xml new file mode 100644 index 00000000..920546dc --- /dev/null +++ b/tests/docs/bug-164.xml @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<doc> + <stuff name="A & B"/> +</doc> diff --git a/tests/general/Makefile.am b/tests/general/Makefile.am index 55b3e394..618b23a5 100644 --- a/tests/general/Makefile.am +++ b/tests/general/Makefile.am @@ -171,6 +171,7 @@ EXTRA_DIST = \ bug-160.out bug-160.xsl \ bug-161.out bug-161.xsl \ bug-163.out bug-163.xsl \ + bug-164.out bug-164.xsl \ character.out character.xsl \ character2.out character2.xsl \ itemschoose.out itemschoose.xsl \ diff --git a/tests/general/bug-164.out b/tests/general/bug-164.out new file mode 100644 index 00000000..7bf839ab --- /dev/null +++ b/tests/general/bug-164.out @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="us-ascii"?> + + <stuff name="A & B"/> + diff --git a/tests/general/bug-164.xsl b/tests/general/bug-164.xsl new file mode 100644 index 00000000..ef4ae188 --- /dev/null +++ b/tests/general/bug-164.xsl @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<xsl:stylesheet + version="1.1" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + > + +<xsl:output encoding="us-ascii"/> + +<xsl:template match="stuff"> + <xsl:copy-of select="."/> +</xsl:template> + +</xsl:stylesheet> |