Blob Blame History Raw
To: vim-dev@vim.org
Subject: Patch 7.2.122
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.122
Problem:    Invalid memory access when the VimResized autocommand changes
            'columns' and/or 'lines'.
Solution:   After VimResized check for changed values. (Dominique Pelle)
Files:      src/screen.c


*** ../vim-7.2.121/src/screen.c	Sun Feb 22 01:13:45 2009
--- src/screen.c	Sun Feb 22 01:07:38 2009
***************
*** 7368,7374 ****
--- 7368,7378 ----
  #endif
      static int	    entered = FALSE;		/* avoid recursiveness */
      static int	    done_outofmem_msg = FALSE;	/* did outofmem message */
+ #ifdef FEAT_AUTOCMD
+     int		    retry_count = 0;
  
+ retry:
+ #endif
      /*
       * Allocation of the screen buffers is done only when the size changes and
       * when Rows and Columns have been set and we have started doing full
***************
*** 7643,7650 ****
      --RedrawingDisabled;
  
  #ifdef FEAT_AUTOCMD
!     if (starting == 0)
  	apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
  #endif
  }
  
--- 7647,7663 ----
      --RedrawingDisabled;
  
  #ifdef FEAT_AUTOCMD
!     /*
!      * Do not apply autocommands more than 3 times to avoid an endless loop
!      * in case applying autocommands always changes Rows or Columns.
!      */
!     if (starting == 0 && ++retry_count <= 3)
!     {
  	apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
+ 	/* In rare cases, autocommands may have altered Rows or Columns,
+ 	 * jump back to check if we need to allocate the screen again. */
+ 	goto retry;
+     }
  #endif
  }
  
*** ../vim-7.2.121/src/version.c	Sun Feb 22 02:51:37 2009
--- src/version.c	Sun Feb 22 21:11:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     122,
  /**/

-- 
FIXME and XXX are two common keywords used to mark broken or incomplete code
not only since XXX as a sex reference would grab everbodys attention but
simply due to the fact that Vim would highlight these words.
					-- Hendrik Scholz

 /// 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    ///