Patch 8.2.0067

8 views
Skip to first unread message

Bram Moolenaar

unread,
Dec 31, 2019, 3:27:52 PM12/31/19
to vim...@googlegroups.com

Patch 8.2.0067
Problem: ERROR_UNKNOWN clashes on some systems.
Solution: Rename ERROR_ to FCERR_. (Ola Söder, closes #5415)
Files: src/evalfunc.c, src/userfunc.c, src/vim.h


*** ../vim-8.2.0066/src/evalfunc.c 2019-12-27 13:49:19.984946890 +0100
--- src/evalfunc.c 2019-12-31 21:24:07.423857495 +0100
***************
*** 976,989 ****

i = find_internal_func(name);
if (i < 0)
! return ERROR_UNKNOWN;
if (argcount < global_functions[i].f_min_argc)
! return ERROR_TOOFEW;
if (argcount > global_functions[i].f_max_argc)
! return ERROR_TOOMANY;
argvars[argcount].v_type = VAR_UNKNOWN;
global_functions[i].f_func(argvars, rettv);
! return ERROR_NONE;
}

/*
--- 976,989 ----

i = find_internal_func(name);
if (i < 0)
! return FCERR_UNKNOWN;
if (argcount < global_functions[i].f_min_argc)
! return FCERR_TOOFEW;
if (argcount > global_functions[i].f_max_argc)
! return FCERR_TOOMANY;
argvars[argcount].v_type = VAR_UNKNOWN;
global_functions[i].f_func(argvars, rettv);
! return FCERR_NONE;
}

/*
***************
*** 1003,1015 ****

fi = find_internal_func(name);
if (fi < 0)
! return ERROR_UNKNOWN;
if (global_functions[fi].f_argtype == 0)
! return ERROR_NOTMETHOD;
if (argcount + 1 < global_functions[fi].f_min_argc)
! return ERROR_TOOFEW;
if (argcount + 1 > global_functions[fi].f_max_argc)
! return ERROR_TOOMANY;

if (global_functions[fi].f_argtype == FEARG_LAST)
{
--- 1003,1015 ----

fi = find_internal_func(name);
if (fi < 0)
! return FCERR_UNKNOWN;
if (global_functions[fi].f_argtype == 0)
! return FCERR_NOTMETHOD;
if (argcount + 1 < global_functions[fi].f_min_argc)
! return FCERR_TOOFEW;
if (argcount + 1 > global_functions[fi].f_max_argc)
! return FCERR_TOOMANY;

if (global_functions[fi].f_argtype == FEARG_LAST)
{
***************
*** 1055,1061 ****
argv[argcount + 1].v_type = VAR_UNKNOWN;

global_functions[fi].f_func(argv, rettv);
! return ERROR_NONE;
}

/*
--- 1055,1061 ----
argv[argcount + 1].v_type = VAR_UNKNOWN;

global_functions[fi].f_func(argv, rettv);
! return FCERR_NONE;
}

/*
*** ../vim-8.2.0066/src/userfunc.c 2019-12-29 23:04:20.294639884 +0100
--- src/userfunc.c 2019-12-31 21:24:10.475847397 +0100
***************
*** 549,555 ****
if (eval_fname_sid(name)) // "<SID>" or "s:"
{
if (current_sctx.sc_sid <= 0)
! *error = ERROR_SCRIPT;
else
{
sprintf((char *)fname_buf + 3, "%ld_",
--- 549,555 ----
if (eval_fname_sid(name)) // "<SID>" or "s:"
{
if (current_sctx.sc_sid <= 0)
! *error = FCERR_SCRIPT;
else
{
sprintf((char *)fname_buf + 3, "%ld_",
***************
*** 566,572 ****
{
fname = alloc(i + STRLEN(name + llen) + 1);
if (fname == NULL)
! *error = ERROR_OTHER;
else
{
*tofree = fname;
--- 566,572 ----
{
fname = alloc(i + STRLEN(name + llen) + 1);
if (fname == NULL)
! *error = FCERR_OTHER;
else
{
*tofree = fname;
***************
*** 1482,1488 ****
funcexe_T *funcexe) // more arguments
{
int ret = FAIL;
! int error = ERROR_NONE;
int i;
ufunc_T *fp;
char_u fname_buf[FLEN_FIXED + 1];
--- 1482,1488 ----
funcexe_T *funcexe) // more arguments
{
int ret = FAIL;
! int error = FCERR_NONE;
int i;
ufunc_T *fp;
char_u fname_buf[FLEN_FIXED + 1];
***************
*** 1520,1532 ****
// When the dict was bound explicitly use the one from the partial.
if (partial->pt_dict != NULL && (selfdict == NULL || !partial->pt_auto))
selfdict = partial->pt_dict;
! if (error == ERROR_NONE && partial->pt_argc > 0)
{
for (argv_clear = 0; argv_clear < partial->pt_argc; ++argv_clear)
{
if (argv_clear + argcount_in >= MAX_FUNC_ARGS)
{
! error = ERROR_TOOMANY;
goto theend;
}
copy_tv(&partial->pt_argv[argv_clear], &argv[argv_clear]);
--- 1520,1532 ----
// When the dict was bound explicitly use the one from the partial.
if (partial->pt_dict != NULL && (selfdict == NULL || !partial->pt_auto))
selfdict = partial->pt_dict;
! if (error == FCERR_NONE && partial->pt_argc > 0)
{
for (argv_clear = 0; argv_clear < partial->pt_argc; ++argv_clear)
{
if (argv_clear + argcount_in >= MAX_FUNC_ARGS)
{
! error = FCERR_TOOMANY;
goto theend;
}
copy_tv(&partial->pt_argv[argv_clear], &argv[argv_clear]);
***************
*** 1538,1544 ****
}
}

! if (error == ERROR_NONE && funcexe->evaluate)
{
char_u *rfname = fname;

--- 1538,1544 ----
}
}

! if (error == FCERR_NONE && funcexe->evaluate)
{
char_u *rfname = fname;

***************
*** 1548,1554 ****

rettv->v_type = VAR_NUMBER; // default rettv is number zero
rettv->vval.v_number = 0;
! error = ERROR_UNKNOWN;

if (!builtin_function(rfname, -1))
{
--- 1548,1554 ----

rettv->v_type = VAR_NUMBER; // default rettv is number zero
rettv->vval.v_number = 0;
! error = FCERR_UNKNOWN;

if (!builtin_function(rfname, -1))
{
***************
*** 1577,1583 ****
}

if (fp != NULL && (fp->uf_flags & FC_DELETED))
! error = ERROR_DELETED;
else if (fp != NULL)
{
if (funcexe->argv_func != NULL)
--- 1577,1583 ----
}

if (fp != NULL && (fp->uf_flags & FC_DELETED))
! error = FCERR_DELETED;
else if (fp != NULL)
{
if (funcexe->argv_func != NULL)
***************
*** 1598,1608 ****
if (fp->uf_flags & FC_RANGE && funcexe->doesrange != NULL)
*funcexe->doesrange = TRUE;
if (argcount < fp->uf_args.ga_len - fp->uf_def_args.ga_len)
! error = ERROR_TOOFEW;
else if (!fp->uf_varargs && argcount > fp->uf_args.ga_len)
! error = ERROR_TOOMANY;
else if ((fp->uf_flags & FC_DICT) && selfdict == NULL)
! error = ERROR_DICT;
else
{
int did_save_redo = FALSE;
--- 1598,1608 ----
if (fp->uf_flags & FC_RANGE && funcexe->doesrange != NULL)
*funcexe->doesrange = TRUE;
if (argcount < fp->uf_args.ga_len - fp->uf_def_args.ga_len)
! error = FCERR_TOOFEW;
else if (!fp->uf_varargs && argcount > fp->uf_args.ga_len)
! error = FCERR_TOOMANY;
else if ((fp->uf_flags & FC_DICT) && selfdict == NULL)
! error = FCERR_DICT;
else
{
int did_save_redo = FALSE;
***************
*** 1630,1636 ****
if (did_save_redo)
restoreRedobuff(&save_redo);
restore_search_patterns();
! error = ERROR_NONE;
}
}
}
--- 1630,1636 ----
if (did_save_redo)
restoreRedobuff(&save_redo);
restore_search_patterns();
! error = FCERR_NONE;
}
}
}
***************
*** 1662,1668 ****
*/
update_force_abort();
}
! if (error == ERROR_NONE)
ret = OK;

theend:
--- 1662,1668 ----
*/
update_force_abort();
}
! if (error == FCERR_NONE)
ret = OK;

theend:
***************
*** 1674,1704 ****
{
switch (error)
{
! case ERROR_UNKNOWN:
emsg_funcname(N_("E117: Unknown function: %s"), name);
break;
! case ERROR_NOTMETHOD:
emsg_funcname(
N_("E276: Cannot use function as a method: %s"),
name);
break;
! case ERROR_DELETED:
emsg_funcname(N_("E933: Function was deleted: %s"), name);
break;
! case ERROR_TOOMANY:
emsg_funcname((char *)e_toomanyarg, name);
break;
! case ERROR_TOOFEW:
emsg_funcname(
N_("E119: Not enough arguments for function: %s"),
name);
break;
! case ERROR_SCRIPT:
emsg_funcname(
N_("E120: Using <SID> not in a script context: %s"),
name);
break;
! case ERROR_DICT:
emsg_funcname(
N_("E725: Calling dict function without Dictionary: %s"),
name);
--- 1674,1704 ----
{
switch (error)
{
! case FCERR_UNKNOWN:
emsg_funcname(N_("E117: Unknown function: %s"), name);
break;
! case FCERR_NOTMETHOD:
emsg_funcname(
N_("E276: Cannot use function as a method: %s"),
name);
break;
! case FCERR_DELETED:
emsg_funcname(N_("E933: Function was deleted: %s"), name);
break;
! case FCERR_TOOMANY:
emsg_funcname((char *)e_toomanyarg, name);
break;
! case FCERR_TOOFEW:
emsg_funcname(
N_("E119: Not enough arguments for function: %s"),
name);
break;
! case FCERR_SCRIPT:
emsg_funcname(
N_("E120: Using <SID> not in a script context: %s"),
name);
break;
! case FCERR_DICT:
emsg_funcname(
N_("E725: Calling dict function without Dictionary: %s"),
name);
***************
*** 3847,3853 ****
{
ufunc_T *fp = fp_in;
funccall_T *fc;
! int error = ERROR_NONE;
char_u fname_buf[FLEN_FIXED + 1];
char_u *tofree = NULL;
char_u *fname;
--- 3847,3853 ----
{
ufunc_T *fp = fp_in;
funccall_T *fc;
! int error = FCERR_NONE;
char_u fname_buf[FLEN_FIXED + 1];
char_u *tofree = NULL;
char_u *fname;
*** ../vim-8.2.0066/src/vim.h 2019-12-29 13:56:28.696861865 +0100
--- src/vim.h 2019-12-31 21:24:14.203835061 +0100
***************
*** 2551,2565 ****
// be freed.

// errors for when calling a function
! #define ERROR_UNKNOWN 0
! #define ERROR_TOOMANY 1
! #define ERROR_TOOFEW 2
! #define ERROR_SCRIPT 3
! #define ERROR_DICT 4
! #define ERROR_NONE 5
! #define ERROR_OTHER 6
! #define ERROR_DELETED 7
! #define ERROR_NOTMETHOD 8 // function cannot be used as a method

// flags for find_name_end()
#define FNE_INCL_BR 1 // include [] in name
--- 2551,2565 ----
// be freed.

// errors for when calling a function
! #define FCERR_UNKNOWN 0
! #define FCERR_TOOMANY 1
! #define FCERR_TOOFEW 2
! #define FCERR_SCRIPT 3
! #define FCERR_DICT 4
! #define FCERR_NONE 5
! #define FCERR_OTHER 6
! #define FCERR_DELETED 7
! #define FCERR_NOTMETHOD 8 // function cannot be used as a method

// flags for find_name_end()
#define FNE_INCL_BR 1 // include [] in name
*** ../vim-8.2.0066/src/version.c 2019-12-31 19:24:47.989647273 +0100
--- src/version.c 2019-12-31 21:25:41.591546454 +0100
***************
*** 744,745 ****
--- 744,747 ----
{ /* Add new patch number below this line */
+ /**/
+ 67,
/**/

--
There are 10 kinds of people: Those who understand binary and those who don't.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages