From 40d8d1fe193854bc184305e56ac45434d852d8a9 Mon Sep 17 00:00:00 2001 From: "William M. Brack" Date: Thu, 15 May 2003 03:53:33 +0000 Subject: [PATCH] Fixed bug 112995 --- ChangeLog | 5 +++++ libxslt/xsltutils.c | 12 +++++++++++- tests/docs/bug-120.xml | 15 +++++++++++++++ tests/general/bug-120.out | 8 ++++++++ tests/general/bug-120.xsl | 27 +++++++++++++++++++++++++++ 5 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 tests/docs/bug-120.xml create mode 100644 tests/general/bug-120.out create mode 100644 tests/general/bug-120.xsl diff --git a/ChangeLog b/ChangeLog index 9ef052e..ac9b98c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu May 15 11:45:00 HKT 2003 William Brack + + * libxslt/xsltutils.c: fixing bug #112995, a problem with + NaN within the sort element. Also added regression test. + Tue May 13 18:22:38 EDT 2003 Daniel Veillard * doc/Makefile.am: fixing bug #112803 , make sure to avoid diff --git a/libxslt/xsltutils.c b/libxslt/xsltutils.c index 5c76c13..48afe89 100644 --- a/libxslt/xsltutils.c +++ b/libxslt/xsltutils.c @@ -847,7 +847,17 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts, tst = 1; else { if (number) { - if (results[j]->floatval == results[j + incr]->floatval) + /* We arbitrarily make NaN bigger than number + (thinking that alpha is usually > number) */ + if (xmlXPathIsNaN(results[j]->floatval)) { + if (xmlXPathIsNaN(results[j + incr]->floatval)) + tst = 0; + else + tst = 1; + } else if (xmlXPathIsNaN(results[j + incr]->floatval)) + tst = -1; + else if (results[j]->floatval == + results[j + incr]->floatval) tst = 0; else if (results[j]->floatval > results[j + incr]->floatval) diff --git a/tests/docs/bug-120.xml b/tests/docs/bug-120.xml new file mode 100644 index 0000000..e2c80ae --- /dev/null +++ b/tests/docs/bug-120.xml @@ -0,0 +1,15 @@ + + + 3 + + 1 + 4 + + + -1 + some alpha + + -99999999 + + + diff --git a/tests/general/bug-120.out b/tests/general/bug-120.out new file mode 100644 index 0000000..3fc36a1 --- /dev/null +++ b/tests/general/bug-120.out @@ -0,0 +1,8 @@ + + + Ascending numeric + -99999999-1134some alpha + Descending numeric + some alpha431-1-99999999 + Ascending alpha + -1-99999999134some alpha diff --git a/tests/general/bug-120.xsl b/tests/general/bug-120.xsl new file mode 100644 index 0000000..9b456c0 --- /dev/null +++ b/tests/general/bug-120.xsl @@ -0,0 +1,27 @@ + + + + + + + Ascending numeric + + + + + Descending numeric + + + + + Ascending alpha + + + + + + + + + -- 2.7.4