diff options
Diffstat (limited to 'source/ap/vim/patches/7.2.280')
-rw-r--r-- | source/ap/vim/patches/7.2.280 | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/source/ap/vim/patches/7.2.280 b/source/ap/vim/patches/7.2.280 deleted file mode 100644 index 6223ac45..00000000 --- a/source/ap/vim/patches/7.2.280 +++ /dev/null @@ -1,251 +0,0 @@ -To: vim-dev@vim.org -Subject: Patch 7.2.280 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.2.280 -Problem: A redraw in a custom statusline with %! may cause a crash. - (Yukihiro Nakadaira) -Solution: Make a copy of 'statusline'. Also fix typo in function name - redraw_custum_statusline. (party by Dominique Pelle) -Files: src/screen.c - - -*** ../vim-7.2.279/src/screen.c 2009-07-29 16:13:35.000000000 +0200 ---- src/screen.c 2009-11-03 17:13:16.000000000 +0100 -*************** -*** 132,138 **** - static void draw_vsep_win __ARGS((win_T *wp, int row)); - #endif - #ifdef FEAT_STL_OPT -! static void redraw_custum_statusline __ARGS((win_T *wp)); - #endif - #ifdef FEAT_SEARCH_EXTRA - #define SEARCH_HL_PRIORITY 0 ---- 132,138 ---- - static void draw_vsep_win __ARGS((win_T *wp, int row)); - #endif - #ifdef FEAT_STL_OPT -! static void redraw_custom_statusline __ARGS((win_T *wp)); - #endif - #ifdef FEAT_SEARCH_EXTRA - #define SEARCH_HL_PRIORITY 0 -*************** -*** 5772,5778 **** - else if (*p_stl != NUL || *wp->w_p_stl != NUL) - { - /* redraw custom status line */ -! redraw_custum_statusline(wp); - } - #endif - else ---- 5794,5800 ---- - else if (*p_stl != NUL || *wp->w_p_stl != NUL) - { - /* redraw custom status line */ -! redraw_custom_statusline(wp); - } - #endif - else -*************** -*** 5897,5914 **** - * errors encountered. - */ - static void -! redraw_custum_statusline(wp) - win_T *wp; - { -! int save_called_emsg = called_emsg; - - called_emsg = FALSE; - win_redr_custom(wp, FALSE); - if (called_emsg) - set_string_option_direct((char_u *)"statusline", -1, - (char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL - ? OPT_LOCAL : OPT_GLOBAL), SID_ERROR); - called_emsg |= save_called_emsg; - } - #endif - ---- 5919,5949 ---- - * errors encountered. - */ - static void -! redraw_custom_statusline(wp) - win_T *wp; - { -! static int entered = FALSE; -! int save_called_emsg = called_emsg; -! -! /* When called recursively return. This can happen when the statusline -! * contains an expression that triggers a redraw. */ -! if (entered) -! return; -! entered = TRUE; - - called_emsg = FALSE; - win_redr_custom(wp, FALSE); - if (called_emsg) -+ { -+ /* When there is an error disable the statusline, otherwise the -+ * display is messed up with errors and a redraw triggers the problem -+ * again and again. */ - set_string_option_direct((char_u *)"statusline", -1, - (char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL - ? OPT_LOCAL : OPT_GLOBAL), SID_ERROR); -+ } - called_emsg |= save_called_emsg; -+ entered = FALSE; - } - #endif - -*************** -*** 6016,6021 **** ---- 6051,6057 ---- - int len; - int fillchar; - char_u buf[MAXPATHL]; -+ char_u *stl; - char_u *p; - struct stl_hlrec hltab[STL_MAX_ITEM]; - struct stl_hlrec tabtab[STL_MAX_ITEM]; -*************** -*** 6025,6031 **** - if (wp == NULL) - { - /* Use 'tabline'. Always at the first line of the screen. */ -! p = p_tal; - row = 0; - fillchar = ' '; - attr = hl_attr(HLF_TPF); ---- 6061,6067 ---- - if (wp == NULL) - { - /* Use 'tabline'. Always at the first line of the screen. */ -! stl = p_tal; - row = 0; - fillchar = ' '; - attr = hl_attr(HLF_TPF); -*************** -*** 6042,6058 **** - - if (draw_ruler) - { -! p = p_ruf; - /* advance past any leading group spec - implicit in ru_col */ -! if (*p == '%') - { -! if (*++p == '-') -! p++; -! if (atoi((char *) p)) -! while (VIM_ISDIGIT(*p)) -! p++; -! if (*p++ != '(') -! p = p_ruf; - } - #ifdef FEAT_VERTSPLIT - col = ru_col - (Columns - W_WIDTH(wp)); ---- 6078,6094 ---- - - if (draw_ruler) - { -! stl = p_ruf; - /* advance past any leading group spec - implicit in ru_col */ -! if (*stl == '%') - { -! if (*++stl == '-') -! stl++; -! if (atoi((char *)stl)) -! while (VIM_ISDIGIT(*stl)) -! stl++; -! if (*stl++ != '(') -! stl = p_ruf; - } - #ifdef FEAT_VERTSPLIT - col = ru_col - (Columns - W_WIDTH(wp)); -*************** -*** 6081,6089 **** - else - { - if (*wp->w_p_stl != NUL) -! p = wp->w_p_stl; - else -! p = p_stl; - # ifdef FEAT_EVAL - use_sandbox = was_set_insecurely((char_u *)"statusline", - *wp->w_p_stl == NUL ? 0 : OPT_LOCAL); ---- 6117,6125 ---- - else - { - if (*wp->w_p_stl != NUL) -! stl = wp->w_p_stl; - else -! stl = p_stl; - # ifdef FEAT_EVAL - use_sandbox = was_set_insecurely((char_u *)"statusline", - *wp->w_p_stl == NUL ? 0 : OPT_LOCAL); -*************** -*** 6098,6107 **** - if (maxwidth <= 0) - return; - - width = build_stl_str_hl(wp == NULL ? curwin : wp, - buf, sizeof(buf), -! p, use_sandbox, - fillchar, maxwidth, hltab, tabtab); - len = (int)STRLEN(buf); - - while (width < maxwidth && len < (int)sizeof(buf) - 1) ---- 6134,6147 ---- - if (maxwidth <= 0) - return; - -+ /* Make a copy, because the statusline may include a function call that -+ * might change the option value and free the memory. */ -+ stl = vim_strsave(stl); - width = build_stl_str_hl(wp == NULL ? curwin : wp, - buf, sizeof(buf), -! stl, use_sandbox, - fillchar, maxwidth, hltab, tabtab); -+ vim_free(stl); - len = (int)STRLEN(buf); - - while (width < maxwidth && len < (int)sizeof(buf) - 1) -*************** -*** 9465,9471 **** - #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS) - if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height) - { -! redraw_custum_statusline(curwin); - } - else - #endif ---- 9505,9511 ---- - #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS) - if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height) - { -! redraw_custom_statusline(curwin); - } - else - #endif -*** ../vim-7.2.279/src/version.c 2009-11-03 16:44:04.000000000 +0100 ---- src/version.c 2009-11-03 17:15:35.000000000 +0100 -*************** -*** 678,679 **** ---- 678,681 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 280, - /**/ - --- -Every exit is an entrance into something else. - - /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ -/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ -\\\ download, build and distribute -- http://www.A-A-P.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |