diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | libxslt/numbers.c | 14 | ||||
-rw-r--r-- | tests/docs/Makefile.am | 1 | ||||
-rw-r--r-- | tests/docs/bug-61.xml | 1 | ||||
-rw-r--r-- | tests/general/Makefile.am | 1 | ||||
-rw-r--r-- | tests/general/bug-61.out | 10 | ||||
-rw-r--r-- | tests/general/bug-61.xsl | 14 |
7 files changed, 48 insertions, 0 deletions
@@ -1,3 +1,10 @@ +Fri Sep 14 15:22:30 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * libxslt/numbers.c: Fixing bug #60415 + * tests/docs/Makefile.am tests/docs/bug-61.xml + tests/general/Makefile.am tests/general/bug-61.*: added a + specific example in the regression tests + Fri Sep 14 12:42:22 CEST 2001 Daniel Veillard <daniel@veillard.com> * tests/docbook/result/*: the change in libxml to output diff --git a/libxslt/numbers.c b/libxslt/numbers.c index 920ef615..2f6a9705 100644 --- a/libxslt/numbers.c +++ b/libxslt/numbers.c @@ -774,6 +774,20 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self, /* flag to show error found, should use default format */ char found_error = 0; + switch (xmlXPathIsInf(number)) { + case -1: + *result = xmlStrdup(BAD_CAST "-Infinity"); + return(status); + case 1: + *result = xmlStrdup(BAD_CAST "Infinity"); + return(status); + default: + if (xmlXPathIsNaN(number)) { + *result = xmlStrdup(BAD_CAST "NaN"); + return(status); + } + } + buffer = xmlBufferCreate(); if (buffer == NULL) { return XPATH_MEMORY_ERROR; diff --git a/tests/docs/Makefile.am b/tests/docs/Makefile.am index 6de218bf..045170ec 100644 --- a/tests/docs/Makefile.am +++ b/tests/docs/Makefile.am @@ -62,6 +62,7 @@ EXTRA_DIST = \ bug-57.xml \ bug-59.xml \ bug-60.xml \ + bug-61.xml \ character.xml \ array.xml \ items.xml diff --git a/tests/docs/bug-61.xml b/tests/docs/bug-61.xml new file mode 100644 index 00000000..69d62f2c --- /dev/null +++ b/tests/docs/bug-61.xml @@ -0,0 +1 @@ +<doc/> diff --git a/tests/general/Makefile.am b/tests/general/Makefile.am index 8e9a4dec..58902be0 100644 --- a/tests/general/Makefile.am +++ b/tests/general/Makefile.am @@ -64,6 +64,7 @@ EXTRA_DIST = \ bug-57.out bug-57.xsl \ bug-59.out bug-59.xsl \ bug-60.out bug-60.xsl \ + bug-61.out bug-61.xsl \ character.out character.xsl \ character2.out character2.xsl \ itemschoose.out itemschoose.xsl \ diff --git a/tests/general/bug-61.out b/tests/general/bug-61.out new file mode 100644 index 00000000..5ac0a079 --- /dev/null +++ b/tests/general/bug-61.out @@ -0,0 +1,10 @@ +<?xml version="1.0"?> + +case 1: +NaN +case 2: +NaN +case 3: +NaN +case 4: +NaN diff --git a/tests/general/bug-61.xsl b/tests/general/bug-61.xsl new file mode 100644 index 00000000..2070df49 --- /dev/null +++ b/tests/general/bug-61.xsl @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +version="1.0"> +<xsl:template match="/"> +case 1: +<xsl:value-of select="format-number('', '#.#')"/> +case 2: +<xsl:value-of select="number('')"/> +case 3: +<xsl:value-of select="format-number(non/existing/path, '#.#')"/> +case 4: +<xsl:value-of select="number(non/existing/path)"/> +</xsl:template> +</xsl:stylesheet> |