summaryrefslogtreecommitdiffstats
path: root/generic/tclBasic.c
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2024-12-28 13:58:53 (GMT)
committersebres <sebres@users.sourceforge.net>2024-12-28 13:58:53 (GMT)
commitc96fff9fc1d126e5cc439f2f5ea79f3714f46f07 (patch)
tree493c6fd1b352ed100a6ed027139a886efc70b8a3 /generic/tclBasic.c
parent4b9c302d6f04524216edd9d5d7773067fc2ef774 (diff)
downloadtcl-c96fff9fc1d126e5cc439f2f5ea79f3714f46f07.zip
tcl-c96fff9fc1d126e5cc439f2f5ea79f3714f46f07.tar.gz
tcl-c96fff9fc1d126e5cc439f2f5ea79f3714f46f07.tar.bz2
amend to [98006f00ac471be5]: fixes MSVC build (values of FP_* are compiler/implementation specific, e. g. for MSVC FP_NORMAL is equal -1)
Diffstat (limited to 'generic/tclBasic.c')
-rw-r--r--generic/tclBasic.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index c06aac8..a3fe901 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -8719,32 +8719,34 @@ ClassifyDouble(
#endif /* !fpclassify */
}
-#define FP_CLS_ERROR -1
static inline int
DoubleObjClass(
Tcl_Interp *interp,
- Tcl_Obj *objPtr) /* Object with double to get its class. */
+ Tcl_Obj *objPtr, /* Object with double to get its class. */
+ int *fpClsPtr) /* FP class retrieved for double in object. */
{
double d;
void *ptr;
int type;
if (Tcl_GetNumberFromObj(interp, objPtr, &ptr, &type) != TCL_OK) {
- return FP_CLS_ERROR;
+ return TCL_ERROR;
}
switch (type) {
case TCL_NUMBER_NAN:
- return FP_NAN;
+ *fpClsPtr = FP_NAN;
+ return TCL_OK;
case TCL_NUMBER_DOUBLE:
d = *((const double *) ptr);
break;
default:
if (Tcl_GetDoubleFromObj(interp, objPtr, &d) != TCL_OK) {
- return FP_CLS_ERROR;
+ return TCL_ERROR;
}
break;
}
- return ClassifyDouble(d);
+ *fpClsPtr = ClassifyDouble(d);
+ return TCL_OK;
}
static inline int
DoubleObjIsClass(
@@ -8761,8 +8763,7 @@ DoubleObjIsClass(
return TCL_ERROR;
}
- dCls = DoubleObjClass(interp, objv[1]);
- if (dCls == FP_CLS_ERROR) {
+ if (DoubleObjClass(interp, objv[1], &dCls) != TCL_OK) {
return TCL_ERROR;
}
dCls = (
@@ -8844,9 +8845,10 @@ ExprIsUnorderedFunc(
return TCL_ERROR;
}
- dCls = DoubleObjClass(interp, objv[1]);
- dCls2 = DoubleObjClass(interp, objv[2]);
- if (dCls == FP_CLS_ERROR || dCls2 == FP_CLS_ERROR) {
+ if (
+ DoubleObjClass(interp, objv[1], &dCls) != TCL_OK ||
+ DoubleObjClass(interp, objv[2], &dCls2) != TCL_OK
+ ) {
return TCL_ERROR;
}