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 -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/201912312027.xBVKRhSG002688%40masaka.moolenaar.net.

Raspunde prin e-mail lui