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 -- [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].
For more options, visit https://groups.google.com/groups/opt_out.


Raspunde prin e-mail lui