153aa9179Sopenharmony_ciFrom 608c65bb8ebfc12763aee1cc1f3778e17d71596e Mon Sep 17 00:00:00 2001 253aa9179Sopenharmony_ciFrom: Nick Wellnhofer <wellnhofer@aevum.de> 353aa9179Sopenharmony_ciDate: Wed, 18 Jan 2023 15:15:41 +0100 453aa9179Sopenharmony_ciSubject: [PATCH] xpath: number('-') should return NaN 553aa9179Sopenharmony_ci 653aa9179Sopenharmony_ciFixes https://gitlab.gnome.org/GNOME/libxslt/-/issues/81 753aa9179Sopenharmony_ci 853aa9179Sopenharmony_ciReference:https://github.com/GNOME/libxml2/commit/608c65bb8ebfc12763aee1cc1f3778e17d71596e 953aa9179Sopenharmony_ciConflict:NA 1053aa9179Sopenharmony_ci--- 1153aa9179Sopenharmony_ci result/XPath/expr/functions | 4 ++++ 1253aa9179Sopenharmony_ci test/XPath/expr/functions | 1 + 1353aa9179Sopenharmony_ci xpath.c | 6 +++--- 1453aa9179Sopenharmony_ci 3 files changed, 8 insertions(+), 3 deletions(-) 1553aa9179Sopenharmony_ci 1653aa9179Sopenharmony_cidiff --git a/result/XPath/expr/functions b/result/XPath/expr/functions 1753aa9179Sopenharmony_ciindex e09eb4a..4ff9c58 100644 1853aa9179Sopenharmony_ci--- a/result/XPath/expr/functions 1953aa9179Sopenharmony_ci+++ b/result/XPath/expr/functions 2053aa9179Sopenharmony_ci@@ -19,6 +19,10 @@ Object is a number : NaN 2153aa9179Sopenharmony_ci Expression: -number('abc') 2253aa9179Sopenharmony_ci Object is a number : NaN 2353aa9179Sopenharmony_ci 2453aa9179Sopenharmony_ci+======================== 2553aa9179Sopenharmony_ci+Expression: number('-') 2653aa9179Sopenharmony_ci+Object is a number : NaN 2753aa9179Sopenharmony_ci+ 2853aa9179Sopenharmony_ci ======================== 2953aa9179Sopenharmony_ci Expression: floor(0.1) 3053aa9179Sopenharmony_ci Object is a number : 0 3153aa9179Sopenharmony_cidiff --git a/test/XPath/expr/functions b/test/XPath/expr/functions 3253aa9179Sopenharmony_ciindex 00b9461..6008a07 100644 3353aa9179Sopenharmony_ci--- a/test/XPath/expr/functions 3453aa9179Sopenharmony_ci+++ b/test/XPath/expr/functions 3553aa9179Sopenharmony_ci@@ -3,6 +3,7 @@ false() 3653aa9179Sopenharmony_ci number("1.5") 3753aa9179Sopenharmony_ci number('abc') 3853aa9179Sopenharmony_ci -number('abc') 3953aa9179Sopenharmony_ci+number('-') 4053aa9179Sopenharmony_ci floor(0.1) 4153aa9179Sopenharmony_ci floor(-0.1) 4253aa9179Sopenharmony_ci floor(-0) 4353aa9179Sopenharmony_cidiff --git a/xpath.c b/xpath.c 4453aa9179Sopenharmony_ciindex 85d7919..fbec21b 100644 4553aa9179Sopenharmony_ci--- a/xpath.c 4653aa9179Sopenharmony_ci+++ b/xpath.c 4753aa9179Sopenharmony_ci@@ -9987,13 +9987,13 @@ xmlXPathStringEvalNumber(const xmlChar *str) { 4853aa9179Sopenharmony_ci #endif 4953aa9179Sopenharmony_ci if (cur == NULL) return(0); 5053aa9179Sopenharmony_ci while (IS_BLANK_CH(*cur)) cur++; 5153aa9179Sopenharmony_ci- if ((*cur != '.') && ((*cur < '0') || (*cur > '9')) && (*cur != '-')) { 5253aa9179Sopenharmony_ci- return(xmlXPathNAN); 5353aa9179Sopenharmony_ci- } 5453aa9179Sopenharmony_ci if (*cur == '-') { 5553aa9179Sopenharmony_ci isneg = 1; 5653aa9179Sopenharmony_ci cur++; 5753aa9179Sopenharmony_ci } 5853aa9179Sopenharmony_ci+ if ((*cur != '.') && ((*cur < '0') || (*cur > '9'))) { 5953aa9179Sopenharmony_ci+ return(xmlXPathNAN); 6053aa9179Sopenharmony_ci+ } 6153aa9179Sopenharmony_ci 6253aa9179Sopenharmony_ci #ifdef __GNUC__ 6353aa9179Sopenharmony_ci /* 6453aa9179Sopenharmony_ci-- 6553aa9179Sopenharmony_ci2.27.0 6653aa9179Sopenharmony_ci 67