diff options
Diffstat (limited to 'data/vim/patches/8.1.0469')
-rw-r--r-- | data/vim/patches/8.1.0469 | 712 |
1 files changed, 0 insertions, 712 deletions
diff --git a/data/vim/patches/8.1.0469 b/data/vim/patches/8.1.0469 deleted file mode 100644 index 71be8c173..000000000 --- a/data/vim/patches/8.1.0469 +++ /dev/null @@ -1,712 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.0469 -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.0469 -Problem: Too often indexing in qf_lists[]. -Solution: Use a qf_list_T pointer. (Yegappan Lakshmanan) -Files: src/quickfix.c, src/testdir/test_quickfix.vim - - -*** ../vim-8.1.0468/src/quickfix.c 2018-10-07 20:26:15.834185143 +0200 ---- src/quickfix.c 2018-10-11 17:37:51.185959011 +0200 -*************** -*** 1729,1735 **** - if (!adding) - { - // Error when creating a new list. Free the new list -! qf_free(&qi->qf_lists[qi->qf_curlist]); - qi->qf_listcount--; - if (qi->qf_curlist > 0) - --qi->qf_curlist; ---- 1729,1735 ---- - if (!adding) - { - // Error when creating a new list. Free the new list -! qf_free(qfl); - qi->qf_listcount--; - if (qi->qf_curlist > 0) - --qi->qf_curlist; -*************** -*** 1812,1817 **** ---- 1812,1818 ---- - qf_new_list(qf_info_T *qi, char_u *qf_title) - { - int i; -+ qf_list_T *qfl; - - // If the current entry is not the last entry, delete entries beyond - // the current entry. This makes it possible to browse in a tree-like -*************** -*** 1830,1838 **** - } - else - qi->qf_curlist = qi->qf_listcount++; -! vim_memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T))); -! qf_store_title(&qi->qf_lists[qi->qf_curlist], qf_title); -! qi->qf_lists[qi->qf_curlist].qf_id = ++last_qf_id; - } - - /* ---- 1831,1840 ---- - } - else - qi->qf_curlist = qi->qf_listcount++; -! qfl = &qi->qf_lists[qi->qf_curlist]; -! vim_memset(qfl, 0, (size_t)(sizeof(qf_list_T))); -! qf_store_title(qfl, qf_title); -! qfl->qf_id = ++last_qf_id; - } - - /* -*************** -*** 2149,2154 **** ---- 2151,2157 ---- - static int - qf_get_fnum(qf_info_T *qi, int qf_idx, char_u *directory, char_u *fname) - { -+ qf_list_T *qfl = &qi->qf_lists[qf_idx]; - char_u *ptr = NULL; - buf_T *buf; - char_u *bufname; -*************** -*** 2174,2180 **** - if (mch_getperm(ptr) < 0) - { - vim_free(ptr); -! directory = qf_guess_filepath(&qi->qf_lists[qf_idx], fname); - if (directory) - ptr = concat_fnames(directory, fname, TRUE); - else ---- 2177,2183 ---- - if (mch_getperm(ptr) < 0) - { - vim_free(ptr); -! directory = qf_guess_filepath(qfl, fname); - if (directory) - ptr = concat_fnames(directory, fname, TRUE); - else -*************** -*** 3757,3762 **** ---- 3760,3766 ---- - ex_cwindow(exarg_T *eap) - { - qf_info_T *qi = &ql_info; -+ qf_list_T *qfl; - win_T *win; - - if (is_loclist_cmd(eap->cmdidx)) -*************** -*** 3766,3771 **** ---- 3770,3777 ---- - return; - } - -+ qfl = &qi->qf_lists[qi->qf_curlist]; -+ - // Look for an existing quickfix window. - win = qf_find_win(qi); - -*************** -*** 3773,3779 **** - // close the window. If a quickfix window is not open, then open - // it if we have errors; otherwise, leave it closed. - if (qf_stack_empty(qi) -! || qi->qf_lists[qi->qf_curlist].qf_nonevalid - || qf_list_empty(qi, qi->qf_curlist)) - { - if (win != NULL) ---- 3779,3785 ---- - // close the window. If a quickfix window is not open, then open - // it if we have errors; otherwise, leave it closed. - if (qf_stack_empty(qi) -! || qfl->qf_nonevalid - || qf_list_empty(qi, qi->qf_curlist)) - { - if (win != NULL) -*************** -*** 3930,3935 **** ---- 3936,3942 ---- - ex_copen(exarg_T *eap) - { - qf_info_T *qi = &ql_info; -+ qf_list_T *qfl; - int height; - int status = FAIL; - -*************** -*** 3961,3972 **** - if (qf_open_new_cwindow(qi, height) == FAIL) - return; - -! qf_set_title_var(&qi->qf_lists[qi->qf_curlist]); - - // Fill the buffer with the quickfix list. - qf_fill_buffer(qi, curbuf, NULL); - -! curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; - curwin->w_cursor.col = 0; - check_cursor(); - update_topline(); // scroll to show the line ---- 3968,3980 ---- - if (qf_open_new_cwindow(qi, height) == FAIL) - return; - -! qfl = &qi->qf_lists[qi->qf_curlist]; -! qf_set_title_var(qfl); - - // Fill the buffer with the quickfix list. - qf_fill_buffer(qi, curbuf, NULL); - -! curwin->w_cursor.lnum = qfl->qf_index; - curwin->w_cursor.col = 0; - check_cursor(); - update_topline(); // scroll to show the line -*************** -*** 4282,4295 **** - // Check if there is anything to display - if (!qf_stack_empty(qi)) - { -! char_u dirname[MAXPATHL]; - - *dirname = NUL; - - // Add one line for each error - if (old_last == NULL) - { -! qfp = qi->qf_lists[qi->qf_curlist].qf_start; - lnum = 0; - } - else ---- 4290,4304 ---- - // Check if there is anything to display - if (!qf_stack_empty(qi)) - { -! qf_list_T *qfl = &qi->qf_lists[qi->qf_curlist]; -! char_u dirname[MAXPATHL]; - - *dirname = NUL; - - // Add one line for each error - if (old_last == NULL) - { -! qfp = qfl->qf_start; - lnum = 0; - } - else -*************** -*** 4297,4303 **** - qfp = old_last->qf_next; - lnum = buf->b_ml.ml_line_count; - } -! while (lnum < qi->qf_lists[qi->qf_curlist].qf_count) - { - if (qf_buf_add_line(buf, lnum, qfp, dirname) == FAIL) - break; ---- 4306,4312 ---- - qfp = old_last->qf_next; - lnum = buf->b_ml.ml_line_count; - } -! while (lnum < qfl->qf_count) - { - if (qf_buf_add_line(buf, lnum, qfp, dirname) == FAIL) - break; -*************** -*** 4345,4353 **** - * For every change made to the quickfix list, update the changed tick. - */ - static void -! qf_list_changed(qf_info_T *qi, int qf_idx) - { -! qi->qf_lists[qf_idx].qf_changedtick++; - } - - /* ---- 4354,4362 ---- - * For every change made to the quickfix list, update the changed tick. - */ - static void -! qf_list_changed(qf_list_T *qfl) - { -! qfl->qf_changedtick++; - } - - /* -*************** -*** 4595,4601 **** - goto cleanup; - } - if (res >= 0) -! qf_list_changed(qi, qi->qf_curlist); - - // Remember the current quickfix list identifier, so that we can - // check for autocommands changing the current quickfix list. ---- 4604,4610 ---- - goto cleanup; - } - if (res >= 0) -! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); - - // Remember the current quickfix list identifier, so that we can - // check for autocommands changing the current quickfix list. -*************** -*** 4620,4625 **** ---- 4629,4635 ---- - qf_get_size(exarg_T *eap) - { - qf_info_T *qi = &ql_info; -+ qf_list_T *qfl; - qfline_T *qfp; - int i, sz = 0; - int prev_fnum = 0; -*************** -*** 4632,4639 **** - return 0; - } - -! for (i = 0, qfp = qi->qf_lists[qi->qf_curlist].qf_start; -! i < qi->qf_lists[qi->qf_curlist].qf_count && qfp != NULL; - ++i, qfp = qfp->qf_next) - { - if (qfp->qf_valid) ---- 4642,4649 ---- - return 0; - } - -! qfl = &qi->qf_lists[qi->qf_curlist]; -! for (i = 0, qfp = qfl->qf_start; i < qfl->qf_count && qfp != NULL; - ++i, qfp = qfp->qf_next) - { - if (qfp->qf_valid) -*************** -*** 4935,4941 **** - return; - } - if (res >= 0) -! qf_list_changed(qi, qi->qf_curlist); - save_qfid = qi->qf_lists[qi->qf_curlist].qf_id; - if (au_name != NULL) - apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf); ---- 4945,4951 ---- - return; - } - if (res >= 0) -! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); - save_qfid = qi->qf_lists[qi->qf_curlist].qf_id; - if (au_name != NULL) - apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf); -*************** -*** 5204,5209 **** ---- 5214,5220 ---- - char_u *p; - int fi; - qf_info_T *qi = &ql_info; -+ qf_list_T *qfl; - int_u save_qfid; - win_T *wp = NULL; - buf_T *buf; -*************** -*** 5410,5419 **** - - FreeWild(fcount, fnames); - -! qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; -! qi->qf_lists[qi->qf_curlist].qf_ptr = qi->qf_lists[qi->qf_curlist].qf_start; -! qi->qf_lists[qi->qf_curlist].qf_index = 1; -! qf_list_changed(qi, qi->qf_curlist); - - qf_update_buffer(qi, NULL); - ---- 5421,5431 ---- - - FreeWild(fcount, fnames); - -! qfl = &qi->qf_lists[qi->qf_curlist]; -! qfl->qf_nonevalid = FALSE; -! qfl->qf_ptr = qfl->qf_start; -! qfl->qf_index = 1; -! qf_list_changed(qfl); - - qf_update_buffer(qi, NULL); - -*************** -*** 5915,5921 **** - status = dict_add_number(retdict, "size", 0); - if ((status == OK) && (flags & QF_GETLIST_TICK)) - status = dict_add_number(retdict, "changedtick", 0); -! if ((status == OK) && (qi != &ql_info) && (flags & QF_GETLIST_FILEWINID)) - status = dict_add_number(retdict, "filewinid", 0); - - return status; ---- 5927,5933 ---- - status = dict_add_number(retdict, "size", 0); - if ((status == OK) && (flags & QF_GETLIST_TICK)) - status = dict_add_number(retdict, "changedtick", 0); -! if ((status == OK) && IS_LL_STACK(qi) && (flags & QF_GETLIST_FILEWINID)) - status = dict_add_number(retdict, "filewinid", 0); - - return status; -*************** -*** 5925,5933 **** - * Return the quickfix list title as 'title' in retdict - */ - static int -! qf_getprop_title(qf_info_T *qi, int qf_idx, dict_T *retdict) - { -! return dict_add_string(retdict, "title", qi->qf_lists[qf_idx].qf_title); - } - - /* ---- 5937,5945 ---- - * Return the quickfix list title as 'title' in retdict - */ - static int -! qf_getprop_title(qf_list_T *qfl, dict_T *retdict) - { -! return dict_add_string(retdict, "title", qfl->qf_title); - } - - /* -*************** -*** 5973,5989 **** - * Return the quickfix list context (if any) as 'context' in retdict. - */ - static int -! qf_getprop_ctx(qf_info_T *qi, int qf_idx, dict_T *retdict) - { - int status; - dictitem_T *di; - -! if (qi->qf_lists[qf_idx].qf_ctx != NULL) - { - di = dictitem_alloc((char_u *)"context"); - if (di != NULL) - { -! copy_tv(qi->qf_lists[qf_idx].qf_ctx, &di->di_tv); - status = dict_add(retdict, di); - if (status == FAIL) - dictitem_free(di); ---- 5985,6001 ---- - * Return the quickfix list context (if any) as 'context' in retdict. - */ - static int -! qf_getprop_ctx(qf_list_T *qfl, dict_T *retdict) - { - int status; - dictitem_T *di; - -! if (qfl->qf_ctx != NULL) - { - di = dictitem_alloc((char_u *)"context"); - if (di != NULL) - { -! copy_tv(qfl->qf_ctx, &di->di_tv); - status = dict_add(retdict, di); - if (status == FAIL) - dictitem_free(di); -*************** -*** 5998,6013 **** - } - - /* -! * Return the quickfix list index as 'idx' in retdict - */ - static int - qf_getprop_idx(qf_info_T *qi, int qf_idx, dict_T *retdict) - { -! int idx = qi->qf_lists[qf_idx].qf_index; - if (qf_list_empty(qi, qf_idx)) -! // For empty lists, qf_index is set to 1 -! idx = 0; -! return dict_add_number(retdict, "idx", idx); - } - - /* ---- 6010,6025 ---- - } - - /* -! * Return the current quickfix list index as 'idx' in retdict - */ - static int - qf_getprop_idx(qf_info_T *qi, int qf_idx, dict_T *retdict) - { -! int curidx = qi->qf_lists[qf_idx].qf_index; - if (qf_list_empty(qi, qf_idx)) -! // For empty lists, current index is set to 0 -! curidx = 0; -! return dict_add_number(retdict, "idx", curidx); - } - - /* -*************** -*** 6021,6027 **** - qf_info_T *qi = &ql_info; - qf_list_T *qfl; - int status = OK; -! int qf_idx; - dictitem_T *di; - int flags = QF_GETLIST_NONE; - ---- 6033,6039 ---- - qf_info_T *qi = &ql_info; - qf_list_T *qfl; - int status = OK; -! int qf_idx = INVALID_QFIDX; - dictitem_T *di; - int flags = QF_GETLIST_NONE; - -*************** -*** 6043,6049 **** - qfl = &qi->qf_lists[qf_idx]; - - if (flags & QF_GETLIST_TITLE) -! status = qf_getprop_title(qi, qf_idx, retdict); - if ((status == OK) && (flags & QF_GETLIST_NR)) - status = dict_add_number(retdict, "nr", qf_idx + 1); - if ((status == OK) && (flags & QF_GETLIST_WINID)) ---- 6055,6061 ---- - qfl = &qi->qf_lists[qf_idx]; - - if (flags & QF_GETLIST_TITLE) -! status = qf_getprop_title(qfl, retdict); - if ((status == OK) && (flags & QF_GETLIST_NR)) - status = dict_add_number(retdict, "nr", qf_idx + 1); - if ((status == OK) && (flags & QF_GETLIST_WINID)) -*************** -*** 6051,6057 **** - if ((status == OK) && (flags & QF_GETLIST_ITEMS)) - status = qf_getprop_items(qi, qf_idx, retdict); - if ((status == OK) && (flags & QF_GETLIST_CONTEXT)) -! status = qf_getprop_ctx(qi, qf_idx, retdict); - if ((status == OK) && (flags & QF_GETLIST_ID)) - status = dict_add_number(retdict, "id", qfl->qf_id); - if ((status == OK) && (flags & QF_GETLIST_IDX)) ---- 6063,6069 ---- - if ((status == OK) && (flags & QF_GETLIST_ITEMS)) - status = qf_getprop_items(qi, qf_idx, retdict); - if ((status == OK) && (flags & QF_GETLIST_CONTEXT)) -! status = qf_getprop_ctx(qfl, retdict); - if ((status == OK) && (flags & QF_GETLIST_ID)) - status = dict_add_number(retdict, "id", qfl->qf_id); - if ((status == OK) && (flags & QF_GETLIST_IDX)) -*************** -*** 6277,6288 **** - static int - qf_setprop_title(qf_info_T *qi, int qf_idx, dict_T *what, dictitem_T *di) - { - if (di->di_tv.v_type != VAR_STRING) - return FAIL; - -! vim_free(qi->qf_lists[qf_idx].qf_title); -! qi->qf_lists[qf_idx].qf_title = -! get_dict_string(what, (char_u *)"title", TRUE); - if (qf_idx == qi->qf_curlist) - qf_update_win_titlevar(qi); - ---- 6289,6301 ---- - static int - qf_setprop_title(qf_info_T *qi, int qf_idx, dict_T *what, dictitem_T *di) - { -+ qf_list_T *qfl = &qi->qf_lists[qf_idx]; -+ - if (di->di_tv.v_type != VAR_STRING) - return FAIL; - -! vim_free(qfl->qf_title); -! qfl->qf_title = get_dict_string(what, (char_u *)"title", TRUE); - if (qf_idx == qi->qf_curlist) - qf_update_win_titlevar(qi); - -*************** -*** 6375,6380 **** ---- 6388,6394 ---- - int retval = FAIL; - int qf_idx; - int newlist = FALSE; -+ qf_list_T *qfl; - - if (action == ' ' || qf_stack_empty(qi)) - newlist = TRUE; -*************** -*** 6390,6395 **** ---- 6404,6410 ---- - qf_idx = qi->qf_curlist; - } - -+ qfl = &qi->qf_lists[qf_idx]; - if ((di = dict_find(what, (char_u *)"title", -1)) != NULL) - retval = qf_setprop_title(qi, qf_idx, what, di); - if ((di = dict_find(what, (char_u *)"items", -1)) != NULL) -*************** -*** 6397,6413 **** - if ((di = dict_find(what, (char_u *)"lines", -1)) != NULL) - retval = qf_setprop_items_from_lines(qi, qf_idx, what, di, action); - if ((di = dict_find(what, (char_u *)"context", -1)) != NULL) -! retval = qf_setprop_context(&qi->qf_lists[qf_idx], di); - - if (retval == OK) -! qf_list_changed(qi, qf_idx); - - return retval; - } - - /* -! * Find the non-location list window with the specified location list in the -! * current tabpage. - */ - static win_T * - find_win_with_ll(qf_info_T *qi) ---- 6412,6428 ---- - if ((di = dict_find(what, (char_u *)"lines", -1)) != NULL) - retval = qf_setprop_items_from_lines(qi, qf_idx, what, di, action); - if ((di = dict_find(what, (char_u *)"context", -1)) != NULL) -! retval = qf_setprop_context(qfl, di); - - if (retval == OK) -! qf_list_changed(qfl); - - return retval; - } - - /* -! * Find the non-location list window with the specified location list stack in -! * the current tabpage. - */ - static win_T * - find_win_with_ll(qf_info_T *qi) -*************** -*** 6508,6514 **** - { - retval = qf_add_entries(qi, qi->qf_curlist, list, title, action); - if (retval == OK) -! qf_list_changed(qi, qi->qf_curlist); - } - - return retval; ---- 6523,6529 ---- - { - retval = qf_add_entries(qi, qi->qf_curlist, list, title, action); - if (retval == OK) -! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); - } - - return retval; -*************** -*** 6654,6660 **** - eap->line1, eap->line2, - qf_title, NULL); - if (res >= 0) -! qf_list_changed(qi, qi->qf_curlist); - - // Remember the current quickfix list identifier, so that we can - // check for autocommands changing the current quickfix list. ---- 6669,6675 ---- - eap->line1, eap->line2, - qf_title, NULL); - if (res >= 0) -! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); - - // Remember the current quickfix list identifier, so that we can - // check for autocommands changing the current quickfix list. -*************** -*** 6737,6743 **** - (linenr_T)0, (linenr_T)0, - qf_cmdtitle(*eap->cmdlinep), NULL); - if (res >= 0) -! qf_list_changed(qi, qi->qf_curlist); - - // Remember the current quickfix list identifier, so that we can - // check for autocommands changing the current quickfix list. ---- 6752,6758 ---- - (linenr_T)0, (linenr_T)0, - qf_cmdtitle(*eap->cmdlinep), NULL); - if (res >= 0) -! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); - - // Remember the current quickfix list identifier, so that we can - // check for autocommands changing the current quickfix list. -*************** -*** 7013,7018 **** ---- 7028,7035 ---- - regmatch.rm_ic = FALSE; - if (regmatch.regprog != NULL) - { -+ qf_list_T *qfl; -+ - // create a new quickfix list - qf_new_list(qi, qf_cmdtitle(*eap->cmdlinep)); - -*************** -*** 7020,7029 **** - - vim_regfree(regmatch.regprog); - -! qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; -! qi->qf_lists[qi->qf_curlist].qf_ptr = -! qi->qf_lists[qi->qf_curlist].qf_start; -! qi->qf_lists[qi->qf_curlist].qf_index = 1; - } - - if (p_cpo == empty_option) ---- 7037,7048 ---- - - vim_regfree(regmatch.regprog); - -! qfl = &qi->qf_lists[qi->qf_curlist]; -! qfl->qf_nonevalid = FALSE; -! qfl->qf_ptr = qfl->qf_start; -! qfl->qf_index = 1; -! qf_list_changed(qfl); -! qf_update_buffer(qi, NULL); - } - - if (p_cpo == empty_option) -*************** -*** 7032,7040 **** - // Darn, some plugin changed the value. - free_string_option(save_cpo); - -- qf_list_changed(qi, qi->qf_curlist); -- qf_update_buffer(qi, NULL); -- - if (au_name != NULL) - { - apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, ---- 7051,7056 ---- -*** ../vim-8.1.0468/src/testdir/test_quickfix.vim 2018-09-02 15:18:38.910627833 +0200 ---- src/testdir/test_quickfix.vim 2018-10-11 17:37:31.930172891 +0200 -*************** -*** 558,563 **** ---- 558,565 ---- - - " Search for non existing help string - call assert_fails('Xhelpgrep a1b2c3', 'E480:') -+ " Invalid regular expression -+ call assert_fails('Xhelpgrep \@<!', 'E480:') - endfunc - - func Test_helpgrep() -*** ../vim-8.1.0468/src/version.c 2018-10-09 21:49:30.447622031 +0200 ---- src/version.c 2018-10-11 17:38:14.761699178 +0200 -*************** -*** 794,795 **** ---- 794,797 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 469, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -188. You purchase a laptop so you can surf while sitting on the can. - - /// 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 /// |