summaryrefslogtreecommitdiffstats
path: root/generic/tkConfig.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-25 16:12:11 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-25 16:12:11 (GMT)
commit186f5c8cca88c9e09ac1273f16161b40da91d5dc (patch)
tree37426ce59d4e31e5b918f2ceff67655158699418 /generic/tkConfig.c
parent2863744760a2d204f11ad4d334f7ba3eb0af8d15 (diff)
downloadtk-186f5c8cca88c9e09ac1273f16161b40da91d5dc.zip
tk-186f5c8cca88c9e09ac1273f16161b40da91d5dc.tar.gz
tk-186f5c8cca88c9e09ac1273f16161b40da91d5dc.tar.bz2
Implement TK_OPTION_NULL_OK for TK_OPTION_INT (working the same as for TK_OPTION_DOUBLE). Better error-messages.
Diffstat (limited to 'generic/tkConfig.c')
-rw-r--r--generic/tkConfig.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/generic/tkConfig.c b/generic/tkConfig.c
index 533ff99..34dc12e 100644
--- a/generic/tkConfig.c
+++ b/generic/tkConfig.c
@@ -617,7 +617,11 @@ DoObjConfig(
if (nullOK && ObjectIsEmpty(valuePtr)) {
valuePtr = NULL;
newBool = -1;
- } else if (Tcl_GetBooleanFromObj(interp, valuePtr, &newBool) != TCL_OK) {
+ } else if (Tcl_GetBooleanFromObj(nullOK ? NULL : interp, valuePtr, &newBool) != TCL_OK) {
+ if (nullOK && interp) {
+ Tcl_AppendResult(interp, "expected boolean value or \"\" but got \"",
+ Tcl_GetString(valuePtr), "\"", NULL);
+ }
return TCL_ERROR;
}
if (internalPtr != NULL) {
@@ -629,7 +633,14 @@ DoObjConfig(
case TK_OPTION_INT: {
int newInt;
- if (Tcl_GetIntFromObj(interp, valuePtr, &newInt) != TCL_OK) {
+ if (nullOK && ObjectIsEmpty(valuePtr)) {
+ valuePtr = NULL;
+ newInt = 0;
+ } else if (Tcl_GetIntFromObj(nullOK ? NULL : interp, valuePtr, &newInt) != TCL_OK) {
+ if (nullOK && interp) {
+ Tcl_AppendResult(interp, "expected integer or \"\" but got \"",
+ Tcl_GetString(valuePtr), "\"", NULL);
+ }
return TCL_ERROR;
}
if (internalPtr != NULL) {
@@ -666,7 +677,11 @@ DoObjConfig(
valuePtr = NULL;
newDbl = 0;
} else {
- if (Tcl_GetDoubleFromObj(interp, valuePtr, &newDbl) != TCL_OK) {
+ if (Tcl_GetDoubleFromObj(nullOK ? NULL : interp, valuePtr, &newDbl) != TCL_OK) {
+ if (nullOK && interp) {
+ Tcl_AppendResult(interp, "expected floating-point number or \"\" but got \"",
+ Tcl_GetString(valuePtr), "\"", NULL);
+ }
return TCL_ERROR;
}
}