1
0
forked from aniani/vim

patch 8.2.2255: Tcl test fails

Problem:    Tcl test fails.
Solution:   Change option handling.
This commit is contained in:
Bram Moolenaar
2020-12-31 18:11:16 +01:00
parent dd1f426bd6
commit 1779ff4842
2 changed files with 21 additions and 16 deletions

View File

@@ -1281,7 +1281,7 @@ tclsetoption(
{
int err, nobjs, idx;
char_u *option;
int isnum;
getoption_T gov;
long lval;
char_u *sval;
Tcl_Obj *resobj;
@@ -1298,15 +1298,16 @@ tclsetoption(
option = (char_u *)Tcl_GetStringFromObj(objv[objn], NULL);
++objn;
isnum = get_option_value(option, &lval, &sval, 0);
gov = get_option_value(option, &lval, &sval, 0);
err = TCL_OK;
switch (isnum)
switch (gov)
{
case 0:
case gov_string:
Tcl_SetResult(interp, (char *)sval, TCL_VOLATILE);
vim_free(sval);
break;
case 1:
case gov_bool:
case gov_number:
resobj = Tcl_NewLongObj(lval);
Tcl_SetObjResult(interp, resobj);
break;
@@ -1316,7 +1317,7 @@ tclsetoption(
}
if (nobjs == 2)
{
if (isnum)
if (gov != gov_string)
{
sval = NULL; // avoid compiler warning
err = Tcl_GetIndexFromObj(interp, objv[objn], optkw, "", 0, &idx);
@@ -1326,17 +1327,19 @@ tclsetoption(
err = Tcl_GetLongFromObj(interp, objv[objn], &lval);
}
else
switch (idx)
{
case OPT_ON:
lval = 1;
break;
case OPT_OFF:
lval = 0;
break;
case OPT_TOGGLE:
lval = !lval;
break;
switch (idx)
{
case OPT_ON:
lval = 1;
break;
case OPT_OFF:
lval = 0;
break;
case OPT_TOGGLE:
lval = !lval;
break;
}
}
}
else