handle error conditions in tclget*var() functions

This commit is contained in:
Stefan Frederik 2021-12-06 02:00:58 +01:00
parent 31ff86557e
commit 4cd8642362
1 changed files with 28 additions and 4 deletions

View File

@ -2734,22 +2734,46 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
double tclgetdoublevar(const char *s)
{
return atof(Tcl_GetVar(interp,s, TCL_GLOBAL_ONLY));
const char *p;
p = Tcl_GetVar(interp, s, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG);
if(!p) {
dbg(0, "%s\n", tclresult());
return 0.0;
}
return atof(p);
}
int tclgetintvar(const char *s)
{
return atoi(Tcl_GetVar(interp,s, TCL_GLOBAL_ONLY));
const char *p;
p = Tcl_GetVar(interp, s, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG);
if(!p) {
dbg(0, "%s\n", tclresult());
return 0;
}
return atoi(p);
}
int tclgetboolvar(const char *s)
{
return Tcl_GetVar(interp,s, TCL_GLOBAL_ONLY)[0] == '1' ? 1 : 0;
const char *p;
p = Tcl_GetVar(interp, s, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG);
if(!p) {
dbg(0, "%s\n", tclresult());
return 0;
}
return p[0] == '1' ? 1 : 0;
}
const char *tclgetvar(const char *s)
{
return Tcl_GetVar(interp,s, TCL_GLOBAL_ONLY);
const char *p;
p = Tcl_GetVar(interp, s, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG);
if(!p) {
dbg(0, "%s\n", tclresult());
return "";
}
return p;
}
const char *tcleval(const char str[])