forked from aniani/vim
patch 8.2.2255: Tcl test fails
Problem: Tcl test fails. Solution: Change option handling.
This commit is contained in:
35
src/if_tcl.c
35
src/if_tcl.c
@@ -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
|
||||
|
Reference in New Issue
Block a user