Karsten Hopp 0019b2
To: vim_dev@googlegroups.com
Karsten Hopp 0019b2
Subject: Patch 7.3.356
Karsten Hopp 0019b2
Fcc: outbox
Karsten Hopp 0019b2
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 0019b2
Mime-Version: 1.0
Karsten Hopp 0019b2
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 0019b2
Content-Transfer-Encoding: 8bit
Karsten Hopp 0019b2
------------
Karsten Hopp 0019b2
Karsten Hopp 0019b2
Patch 7.3.356
Karsten Hopp 0019b2
Problem:    Using "o" with 'cindent' set may freeze Vim. (lolilolicon)
Karsten Hopp 0019b2
Solution:   Skip over {} correctly. (Hari G)
Karsten Hopp 0019b2
Files:	    src/misc1.c
Karsten Hopp 0019b2
Karsten Hopp 0019b2
Karsten Hopp 0019b2
*** ../vim-7.3.355/src/misc1.c	2011-10-04 18:03:43.000000000 +0200
Karsten Hopp 0019b2
--- src/misc1.c	2011-11-30 12:56:55.000000000 +0100
Karsten Hopp 0019b2
***************
Karsten Hopp 0019b2
*** 6127,6133 ****
Karsten Hopp 0019b2
  
Karsten Hopp 0019b2
  /*
Karsten Hopp 0019b2
   * Set w_cursor.col to the column number of the last unmatched ')' or '{' in
Karsten Hopp 0019b2
!  * line "l".
Karsten Hopp 0019b2
   */
Karsten Hopp 0019b2
      static int
Karsten Hopp 0019b2
  find_last_paren(l, start, end)
Karsten Hopp 0019b2
--- 6127,6133 ----
Karsten Hopp 0019b2
  
Karsten Hopp 0019b2
  /*
Karsten Hopp 0019b2
   * Set w_cursor.col to the column number of the last unmatched ')' or '{' in
Karsten Hopp 0019b2
!  * line "l".  "l" must point to the start of the line.
Karsten Hopp 0019b2
   */
Karsten Hopp 0019b2
      static int
Karsten Hopp 0019b2
  find_last_paren(l, start, end)
Karsten Hopp 0019b2
***************
Karsten Hopp 0019b2
*** 6140,6146 ****
Karsten Hopp 0019b2
  
Karsten Hopp 0019b2
      curwin->w_cursor.col = 0;		    /* default is start of line */
Karsten Hopp 0019b2
  
Karsten Hopp 0019b2
!     for (i = 0; l[i]; i++)
Karsten Hopp 0019b2
      {
Karsten Hopp 0019b2
  	i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */
Karsten Hopp 0019b2
  	i = (int)(skip_string(l + i) - l);    /* ignore parens in quotes */
Karsten Hopp 0019b2
--- 6140,6146 ----
Karsten Hopp 0019b2
  
Karsten Hopp 0019b2
      curwin->w_cursor.col = 0;		    /* default is start of line */
Karsten Hopp 0019b2
  
Karsten Hopp 0019b2
!     for (i = 0; l[i] != NUL; i++)
Karsten Hopp 0019b2
      {
Karsten Hopp 0019b2
  	i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */
Karsten Hopp 0019b2
  	i = (int)(skip_string(l + i) - l);    /* ignore parens in quotes */
Karsten Hopp 0019b2
***************
Karsten Hopp 0019b2
*** 7953,7958 ****
Karsten Hopp 0019b2
--- 7953,7959 ----
Karsten Hopp 0019b2
  			 * If we're at the end of a block, skip to the start of
Karsten Hopp 0019b2
  			 * that block.
Karsten Hopp 0019b2
  			 */
Karsten Hopp 0019b2
+ 			l = ml_get_curline();
Karsten Hopp 0019b2
  			if (find_last_paren(l, '{', '}')
Karsten Hopp 0019b2
  				&& (trypos = find_start_brace(ind_maxcomment))
Karsten Hopp 0019b2
  							    != NULL) /* XXX */
Karsten Hopp 0019b2
*** ../vim-7.3.355/src/version.c	2011-11-30 11:31:25.000000000 +0100
Karsten Hopp 0019b2
--- src/version.c	2011-11-30 13:02:52.000000000 +0100
Karsten Hopp 0019b2
***************
Karsten Hopp 0019b2
*** 716,717 ****
Karsten Hopp 0019b2
--- 716,719 ----
Karsten Hopp 0019b2
  {   /* Add new patch number below this line */
Karsten Hopp 0019b2
+ /**/
Karsten Hopp 0019b2
+     356,
Karsten Hopp 0019b2
  /**/
Karsten Hopp 0019b2
Karsten Hopp 0019b2
-- 
Karsten Hopp 0019b2
hundred-and-one symptoms of being an internet addict:
Karsten Hopp 0019b2
213. Your kids start referring to you as "that guy in front of the monitor."
Karsten Hopp 0019b2
Karsten Hopp 0019b2
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 0019b2
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 0019b2
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 0019b2
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///