From d64f4020e462523f8c5768641857a6c1502b8ce8 Mon Sep 17 00:00:00 2001 From: sebres Date: Fri, 27 Dec 2024 21:15:19 +0000 Subject: tcl::mathfunc::isunordered: extended test illustrating [98006f00ac471be5] --- tests/expr.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/expr.test b/tests/expr.test index 9ad7f6b..25ee747 100644 --- a/tests/expr.test +++ b/tests/expr.test @@ -7381,8 +7381,8 @@ test expr-60.9 {float classification: basic arg handling} -body { } -match glob -result * # Big matrix of comparisons, but it's just a binary isinf() -set values {1.0 -1.0 0.0 -0.0 1e-314 Inf -Inf NaN} -set results {0 0 0 0 0 0 0 1} +set values {1 -1 1.0 -1.0 0.0 -0.0 1e-314 Inf -Inf NaN} +set results {0 0 0 0 0 0 0 0 0 1} set ctr 0 foreach v1 $values r1 $results { foreach v2 $values r2 $results { -- cgit v0.12 From 3fe703f38e8d6abe39c0c23a7589c3b49cb6c69b Mon Sep 17 00:00:00 2001 From: sebres Date: Fri, 27 Dec 2024 21:17:08 +0000 Subject: fixes [98006f00ac471be5] tcl::mathfunc::isunordered mistakenly considered non-double numbers (e.g. int) as double --- generic/tclBasic.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 6b8d1b9..98cdb00 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -8893,7 +8893,9 @@ ExprIsUnorderedFunc( if (type == TCL_NUMBER_NAN) { result = 1; } else { - d = *((const double *) ptr); + if (Tcl_GetDoubleFromObj(interp, objv[1], &d) != TCL_OK) { + return TCL_ERROR; + } result = (ClassifyDouble(d) == FP_NAN); } @@ -8903,7 +8905,9 @@ ExprIsUnorderedFunc( if (type == TCL_NUMBER_NAN) { result |= 1; } else { - d = *((const double *) ptr); + if (Tcl_GetDoubleFromObj(interp, objv[1], &d) != TCL_OK) { + return TCL_ERROR; + } result |= (ClassifyDouble(d) == FP_NAN); } -- cgit v0.12 From 722f0647558e5ddf3d682f7e3ea3fa6152a5eef1 Mon Sep 17 00:00:00 2001 From: sebres Date: Fri, 27 Dec 2024 21:19:15 +0000 Subject: amend to fix [98006f00ac471be5]: typo --- generic/tclBasic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 98cdb00..659002d 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -8905,7 +8905,7 @@ ExprIsUnorderedFunc( if (type == TCL_NUMBER_NAN) { result |= 1; } else { - if (Tcl_GetDoubleFromObj(interp, objv[1], &d) != TCL_OK) { + if (Tcl_GetDoubleFromObj(interp, objv[2], &d) != TCL_OK) { return TCL_ERROR; } result |= (ClassifyDouble(d) == FP_NAN); -- cgit v0.12