To: vim_dev@googlegroups.com
Subject: Patch 7.3.822
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.3.822 (after 7.3.799)
Problem: Crash when accessing freed buffer.
Solution: Get 'textwidth' in caller of enter_buffer(). (Christian Brabandt)
Files: src/buffer.c
*** ../vim-7.3.821/src/buffer.c 2013-02-06 18:44:57.000000000 +0100
--- src/buffer.c 2013-02-17 15:10:44.000000000 +0100
***************
*** 82,87 ****
--- 82,90 ----
#ifdef FEAT_AUTOCMD
buf_T *old_curbuf;
#endif
+ #ifdef FEAT_SYN_HL
+ long old_tw = curbuf->b_p_tw;
+ #endif
/*
* The 'readonly' flag is only set when BF_NEVERLOADED is being reset.
***************
*** 113,118 ****
--- 116,125 ----
}
EMSG(_("E83: Cannot allocate buffer, using other one..."));
enter_buffer(curbuf);
+ #ifdef FEAT_SYN_HL
+ if (old_tw != curbuf->b_p_tw)
+ check_colorcolumn(curwin);
+ #endif
return FAIL;
}
***************
*** 786,791 ****
--- 793,801 ----
# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
cleanup_T cs;
# endif
+ #ifdef FEAT_SYN_HL
+ long old_tw = curbuf->b_p_tw;
+ #endif
if (swap_exists_action == SEA_QUIT)
{
***************
*** 804,810 ****
--- 814,826 ----
if (!buf_valid(old_curbuf) || old_curbuf == curbuf)
old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED);
if (old_curbuf != NULL)
+ {
enter_buffer(old_curbuf);
+ #ifdef FEAT_SYN_HL
+ if (old_tw != curbuf->b_p_tw)
+ check_colorcolumn(curwin);
+ #endif
+ }
/* If "old_curbuf" is NULL we are in big trouble here... */
# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
***************
*** 1364,1369 ****
--- 1380,1388 ----
buf_T *prevbuf;
int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL
|| action == DOBUF_WIPE);
+ #ifdef FEAT_SYN_HL
+ long old_tw = curbuf->b_p_tw;
+ #endif
setpcmark();
if (!cmdmod.keepalt)
***************
*** 1430,1450 ****
# endif
)
#endif
enter_buffer(buf);
}
/*
* Enter a new current buffer.
! * Old curbuf must have been abandoned already!
*/
void
enter_buffer(buf)
buf_T *buf;
{
- #ifdef FEAT_SYN_HL
- long old_tw = curbuf->b_p_tw;
- #endif
-
/* Copy buffer and window local option values. Not for a help buffer. */
buf_copy_options(buf, BCO_ENTER | BCO_NOHELP);
if (!buf->b_help)
--- 1449,1472 ----
# endif
)
#endif
+ {
enter_buffer(buf);
+ #ifdef FEAT_SYN_HL
+ if (old_tw != curbuf->b_p_tw)
+ check_colorcolumn(curwin);
+ #endif
+ }
}
/*
* Enter a new current buffer.
! * Old curbuf must have been abandoned already! This also means "curbuf" may
! * be pointing to freed memory.
*/
void
enter_buffer(buf)
buf_T *buf;
{
/* Copy buffer and window local option values. Not for a help buffer. */
buf_copy_options(buf, BCO_ENTER | BCO_NOHELP);
if (!buf->b_help)
***************
*** 1468,1475 ****
#ifdef FEAT_SYN_HL
curwin->w_s = &(buf->b_s);
- if (old_tw != buf->b_p_tw)
- check_colorcolumn(curwin);
#endif
/* Cursor on first line by default. */
--- 1490,1495 ----
*** ../vim-7.3.821/src/version.c 2013-02-16 18:16:11.000000000 +0100
--- src/version.c 2013-02-17 15:35:41.000000000 +0100
***************
*** 727,728 ****
--- 727,730 ----
{ /* Add new patch number below this line */
+ /**/
+ 822,
/**/
--
Clothes make the man. Naked people have little or no influence on society.
-- Mark Twain (Samuel Clemens) (1835-1910)
/// 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 ///