diff options
Diffstat (limited to 'data/vim/patches/8.1.1319')
-rw-r--r-- | data/vim/patches/8.1.1319 | 455 |
1 files changed, 455 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1319 b/data/vim/patches/8.1.1319 new file mode 100644 index 000000000..349a31e87 --- /dev/null +++ b/data/vim/patches/8.1.1319 @@ -0,0 +1,455 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1319 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.1319 +Problem: Computing function length name in many places. +Solution: compute name length in call_func(). +Files: src/eval.c, src/userfunc.c, src/channel.c, src/evalfunc.c, + src/ex_cmds2.c, src/regexp.c, src/terminal.c + + +*** ../vim-8.1.1318/src/eval.c 2019-05-04 15:05:24.927269310 +0200 +--- src/eval.c 2019-05-11 18:20:17.766390123 +0200 +*************** +*** 765,771 **** + s = expr->vval.v_string; + if (s == NULL || *s == NUL) + return FAIL; +! if (call_func(s, (int)STRLEN(s), rettv, argc, argv, NULL, + 0L, 0L, &dummy, TRUE, NULL, NULL) == FAIL) + return FAIL; + } +--- 765,771 ---- + s = expr->vval.v_string; + if (s == NULL || *s == NUL) + return FAIL; +! if (call_func(s, -1, rettv, argc, argv, NULL, + 0L, 0L, &dummy, TRUE, NULL, NULL) == FAIL) + return FAIL; + } +*************** +*** 776,782 **** + s = partial_name(partial); + if (s == NULL || *s == NUL) + return FAIL; +! if (call_func(s, (int)STRLEN(s), rettv, argc, argv, NULL, + 0L, 0L, &dummy, TRUE, partial, NULL) == FAIL) + return FAIL; + } +--- 776,782 ---- + s = partial_name(partial); + if (s == NULL || *s == NUL) + return FAIL; +! if (call_func(s, -1, rettv, argc, argv, NULL, + 0L, 0L, &dummy, TRUE, partial, NULL) == FAIL) + return FAIL; + } +*************** +*** 1088,1094 **** + int ret; + + rettv->v_type = VAR_UNKNOWN; /* clear_tv() uses this */ +! ret = call_func(func, (int)STRLEN(func), rettv, argc, argv, NULL, + curwin->w_cursor.lnum, curwin->w_cursor.lnum, + &doesrange, TRUE, NULL, NULL); + if (ret == FAIL) +--- 1088,1094 ---- + int ret; + + rettv->v_type = VAR_UNKNOWN; /* clear_tv() uses this */ +! ret = call_func(func, -1, rettv, argc, argv, NULL, + curwin->w_cursor.lnum, curwin->w_cursor.lnum, + &doesrange, TRUE, NULL, NULL); + if (ret == FAIL) +*************** +*** 7109,7115 **** + } + else + s = (char_u *)""; +! ret = get_func_tv(s, (int)STRLEN(s), rettv, arg, + curwin->w_cursor.lnum, curwin->w_cursor.lnum, + &len, evaluate, pt, selfdict); + +--- 7109,7115 ---- + } + else + s = (char_u *)""; +! ret = get_func_tv(s, -1, rettv, arg, + curwin->w_cursor.lnum, curwin->w_cursor.lnum, + &len, evaluate, pt, selfdict); + +*** ../vim-8.1.1318/src/userfunc.c 2019-05-09 21:08:53.764083394 +0200 +--- src/userfunc.c 2019-05-11 18:24:10.045205033 +0200 +*************** +*** 432,447 **** + */ + int + get_func_tv( +! char_u *name, /* name of the function */ +! int len, /* length of "name" */ + typval_T *rettv, +! char_u **arg, /* argument, pointing to the '(' */ +! linenr_T firstline, /* first line of range */ +! linenr_T lastline, /* last line of range */ +! int *doesrange, /* return: function handled range */ + int evaluate, +! partial_T *partial, /* for extra arguments */ +! dict_T *selfdict) /* Dictionary for "self" */ + { + char_u *argp; + int ret = OK; +--- 432,447 ---- + */ + int + get_func_tv( +! char_u *name, // name of the function +! int len, // length of "name" or -1 to use strlen() + typval_T *rettv, +! char_u **arg, // argument, pointing to the '(' +! linenr_T firstline, // first line of range +! linenr_T lastline, // last line of range +! int *doesrange, // return: function handled range + int evaluate, +! partial_T *partial, // for extra arguments +! dict_T *selfdict) // Dictionary for "self" + { + char_u *argp; + int ret = OK; +*************** +*** 1435,1441 **** + } + + if (item == NULL) +! r = call_func(name, (int)STRLEN(name), rettv, argc, argv, NULL, + curwin->w_cursor.lnum, curwin->w_cursor.lnum, + &dummy, TRUE, partial, selfdict); + +--- 1435,1441 ---- + } + + if (item == NULL) +! r = call_func(name, -1, rettv, argc, argv, NULL, + curwin->w_cursor.lnum, curwin->w_cursor.lnum, + &dummy, TRUE, partial, selfdict); + +*************** +*** 1458,1477 **** + */ + int + call_func( +! char_u *funcname, /* name of the function */ +! int len, /* length of "name" */ +! typval_T *rettv, /* return value goes here */ +! int argcount_in, /* number of "argvars" */ +! typval_T *argvars_in, /* vars for arguments, must have "argcount" +! PLUS ONE elements! */ + int (* argv_func)(int, typval_T *, int), +! /* function to fill in argvars */ +! linenr_T firstline, /* first line of range */ +! linenr_T lastline, /* last line of range */ +! int *doesrange, /* return: function handled range */ + int evaluate, +! partial_T *partial, /* optional, can be NULL */ +! dict_T *selfdict_in) /* Dictionary for "self" */ + { + int ret = FAIL; + int error = ERROR_NONE; +--- 1458,1477 ---- + */ + int + call_func( +! char_u *funcname, // name of the function +! int len, // length of "name" or -1 to use strlen() +! typval_T *rettv, // return value goes here +! int argcount_in, // number of "argvars" +! typval_T *argvars_in, // vars for arguments, must have "argcount" +! // PLUS ONE elements! + int (* argv_func)(int, typval_T *, int), +! // function to fill in argvars +! linenr_T firstline, // first line of range +! linenr_T lastline, // last line of range +! int *doesrange, // return: function handled range + int evaluate, +! partial_T *partial, // optional, can be NULL +! dict_T *selfdict_in) // Dictionary for "self" + { + int ret = FAIL; + int error = ERROR_NONE; +*************** +*** 1487,1495 **** + typval_T argv[MAX_FUNC_ARGS + 1]; /* used when "partial" is not NULL */ + int argv_clear = 0; + +! /* Make a copy of the name, if it comes from a funcref variable it could +! * be changed or deleted in the called function. */ +! name = vim_strnsave(funcname, len); + if (name == NULL) + return ret; + +--- 1487,1495 ---- + typval_T argv[MAX_FUNC_ARGS + 1]; /* used when "partial" is not NULL */ + int argv_clear = 0; + +! // Make a copy of the name, if it comes from a funcref variable it could +! // be changed or deleted in the called function. +! name = len > 0 ? vim_strnsave(funcname, len) : vim_strsave(funcname); + if (name == NULL) + return ret; + +*************** +*** 3285,3291 **** + curwin->w_cursor.coladd = 0; + } + arg = startarg; +! if (get_func_tv(name, (int)STRLEN(name), &rettv, &arg, + eap->line1, eap->line2, &doesrange, + !eap->skip, partial, fudi.fd_dict) == FAIL) + { +--- 3285,3291 ---- + curwin->w_cursor.coladd = 0; + } + arg = startarg; +! if (get_func_tv(name, -1, &rettv, &arg, + eap->line1, eap->line2, &doesrange, + !eap->skip, partial, fudi.fd_dict) == FAIL) + { +*** ../vim-8.1.1318/src/channel.c 2019-05-09 21:48:29.033295465 +0200 +--- src/channel.c 2019-05-11 18:19:50.954526577 +0200 +*************** +*** 1650,1656 **** + argv[0].v_type = VAR_CHANNEL; + argv[0].vval.v_channel = channel; + +! call_func(callback, (int)STRLEN(callback), &rettv, 2, argv, NULL, + 0L, 0L, &dummy, TRUE, partial, NULL); + clear_tv(&rettv); + channel_need_redraw = TRUE; +--- 1650,1656 ---- + argv[0].v_type = VAR_CHANNEL; + argv[0].vval.v_channel = channel; + +! call_func(callback, -1, &rettv, 2, argv, NULL, + 0L, 0L, &dummy, TRUE, partial, NULL); + clear_tv(&rettv); + channel_need_redraw = TRUE; +*************** +*** 2989,2995 **** + (char *)channel->ch_close_cb); + argv[0].v_type = VAR_CHANNEL; + argv[0].vval.v_channel = channel; +! call_func(channel->ch_close_cb, (int)STRLEN(channel->ch_close_cb), + &rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE, + channel->ch_close_partial, NULL); + clear_tv(&rettv); +--- 2989,2995 ---- + (char *)channel->ch_close_cb); + argv[0].v_type = VAR_CHANNEL; + argv[0].vval.v_channel = channel; +! call_func(channel->ch_close_cb, -1, + &rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE, + channel->ch_close_partial, NULL); + clear_tv(&rettv); +*************** +*** 5478,5484 **** + argv[0].vval.v_job = job; + argv[1].v_type = VAR_NUMBER; + argv[1].vval.v_number = job->jv_exitval; +! call_func(job->jv_exit_cb, (int)STRLEN(job->jv_exit_cb), + &rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE, + job->jv_exit_partial, NULL); + clear_tv(&rettv); +--- 5478,5484 ---- + argv[0].vval.v_job = job; + argv[1].v_type = VAR_NUMBER; + argv[1].vval.v_number = job->jv_exitval; +! call_func(job->jv_exit_cb, -1, + &rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE, + job->jv_exit_partial, NULL); + clear_tv(&rettv); +*************** +*** 6069,6076 **** + argv[0].vval.v_string = vim_strsave(text); + argv[1].v_type = VAR_UNKNOWN; + +! call_func(curbuf->b_prompt_callback, +! (int)STRLEN(curbuf->b_prompt_callback), + &rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE, + curbuf->b_prompt_partial, NULL); + clear_tv(&argv[0]); +--- 6069,6075 ---- + argv[0].vval.v_string = vim_strsave(text); + argv[1].v_type = VAR_UNKNOWN; + +! call_func(curbuf->b_prompt_callback, -1, + &rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE, + curbuf->b_prompt_partial, NULL); + clear_tv(&argv[0]); +*************** +*** 6093,6100 **** + argv[0].v_type = VAR_UNKNOWN; + + got_int = FALSE; // don't skip executing commands +! call_func(curbuf->b_prompt_interrupt, +! (int)STRLEN(curbuf->b_prompt_interrupt), + &rettv, 0, argv, NULL, 0L, 0L, &dummy, TRUE, + curbuf->b_prompt_int_partial, NULL); + clear_tv(&rettv); +--- 6092,6098 ---- + argv[0].v_type = VAR_UNKNOWN; + + got_int = FALSE; // don't skip executing commands +! call_func(curbuf->b_prompt_interrupt, -1, + &rettv, 0, argv, NULL, 0L, 0L, &dummy, TRUE, + curbuf->b_prompt_int_partial, NULL); + clear_tv(&rettv); +*** ../vim-8.1.1318/src/evalfunc.c 2019-05-10 21:28:35.184612974 +0200 +--- src/evalfunc.c 2019-05-11 18:20:28.850333682 +0200 +*************** +*** 767,772 **** +--- 767,774 ---- + {"line2byte", 1, 1, f_line2byte}, + {"lispindent", 1, 1, f_lispindent}, + {"list2str", 1, 2, f_list2str}, ++ {"listener_add", 1, 2, f_listener_add}, ++ {"listener_remove", 1, 1, f_listener_remove}, + {"localtime", 0, 0, f_localtime}, + #ifdef FEAT_FLOAT + {"log", 1, 1, f_log}, +*************** +*** 9746,9754 **** + + if (failed) + { + list_free(rettv->vval.v_list); +! /* readfile doc says an empty list is returned on error */ +! rettv->vval.v_list = list_alloc(); + } + + vim_free(prev); +--- 9748,9756 ---- + + if (failed) + { ++ // an empty list is returned on error + list_free(rettv->vval.v_list); +! rettv_list_alloc(rettv); + } + + vim_free(prev); +*************** +*** 12644,12651 **** + copy_tv(&si2->item->li_tv, &argv[1]); + + rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ +! res = call_func(func_name, (int)STRLEN(func_name), +! &rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE, + partial, sortinfo->item_compare_selfdict); + clear_tv(&argv[0]); + clear_tv(&argv[1]); +--- 12646,12652 ---- + copy_tv(&si2->item->li_tv, &argv[1]); + + rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ +! res = call_func(func_name, -1, &rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE, + partial, sortinfo->item_compare_selfdict); + clear_tv(&argv[0]); + clear_tv(&argv[1]); +*** ../vim-8.1.1318/src/ex_cmds2.c 2019-05-09 21:48:29.033295465 +0200 +--- src/ex_cmds2.c 2019-05-11 18:20:52.590212764 +0200 +*************** +*** 325,331 **** + argv[0].vval.v_number = (varnumber_T)timer->tr_id; + argv[1].v_type = VAR_UNKNOWN; + +! call_func(timer->tr_callback, (int)STRLEN(timer->tr_callback), + &rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE, + timer->tr_partial, NULL); + clear_tv(&rettv); +--- 325,331 ---- + argv[0].vval.v_number = (varnumber_T)timer->tr_id; + argv[1].v_type = VAR_UNKNOWN; + +! call_func(timer->tr_callback, -1, + &rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE, + timer->tr_partial, NULL); + clear_tv(&rettv); +*** ../vim-8.1.1318/src/regexp.c 2019-04-25 20:07:44.167327851 +0200 +--- src/regexp.c 2019-05-11 18:21:14.426101507 +0200 +*************** +*** 7423,7429 **** + if (expr->v_type == VAR_FUNC) + { + s = expr->vval.v_string; +! call_func(s, (int)STRLEN(s), &rettv, + 1, argv, fill_submatch_list, + 0L, 0L, &dummy, TRUE, NULL, NULL); + } +--- 7423,7429 ---- + if (expr->v_type == VAR_FUNC) + { + s = expr->vval.v_string; +! call_func(s, -1, &rettv, + 1, argv, fill_submatch_list, + 0L, 0L, &dummy, TRUE, NULL, NULL); + } +*************** +*** 7432,7438 **** + partial_T *partial = expr->vval.v_partial; + + s = partial_name(partial); +! call_func(s, (int)STRLEN(s), &rettv, + 1, argv, fill_submatch_list, + 0L, 0L, &dummy, TRUE, partial, NULL); + } +--- 7432,7438 ---- + partial_T *partial = expr->vval.v_partial; + + s = partial_name(partial); +! call_func(s, -1, &rettv, + 1, argv, fill_submatch_list, + 0L, 0L, &dummy, TRUE, partial, NULL); + } +*** ../vim-8.1.1318/src/terminal.c 2019-04-28 19:46:17.034060084 +0200 +--- src/terminal.c 2019-05-11 18:21:27.618034258 +0200 +*************** +*** 3779,3785 **** + argvars[0].v_type = VAR_NUMBER; + argvars[0].vval.v_number = term->tl_buffer->b_fnum; + argvars[1] = item->li_next->li_tv; +! if (call_func(func, (int)STRLEN(func), &rettv, + 2, argvars, /* argv_func */ NULL, + /* firstline */ 1, /* lastline */ 1, + &doesrange, /* evaluate */ TRUE, +--- 3779,3785 ---- + argvars[0].v_type = VAR_NUMBER; + argvars[0].vval.v_number = term->tl_buffer->b_fnum; + argvars[1] = item->li_next->li_tv; +! if (call_func(func, -1, &rettv, + 2, argvars, /* argv_func */ NULL, + /* firstline */ 1, /* lastline */ 1, + &doesrange, /* evaluate */ TRUE, +*** ../vim-8.1.1318/src/version.c 2019-05-11 17:03:55.170019762 +0200 +--- src/version.c 2019-05-11 18:27:05.296182093 +0200 +*************** +*** 769,770 **** +--- 769,772 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1319, + /**/ + +-- +We apologise again for the fault in the subtitles. Those responsible for +sacking the people who have just been sacked have been sacked. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@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 /// |