053fea2
To: vim_dev@googlegroups.com
053fea2
Subject: Patch 7.3.039
053fea2
Fcc: outbox
053fea2
From: Bram Moolenaar <Bram@moolenaar.net>
053fea2
Mime-Version: 1.0
053fea2
Content-Type: text/plain; charset=UTF-8
053fea2
Content-Transfer-Encoding: 8bit
053fea2
------------
053fea2
053fea2
Patch 7.3.039
053fea2
Problem:    Crash when using skk.vim plugin.
053fea2
Solution:   Get length of expression evaluation result only after checking for
053fea2
	    NULL.  (Noriaki Yagi, Dominique Pelle)
053fea2
Files:	    src/ex_getln.c
053fea2
053fea2
053fea2
*** ../vim-7.3.038/src/ex_getln.c	2010-09-29 15:50:14.000000000 +0200
053fea2
--- src/ex_getln.c	2010-10-27 12:42:00.000000000 +0200
053fea2
***************
053fea2
*** 688,711 ****
053fea2
  		    p = get_expr_line();
053fea2
  		    --textlock;
053fea2
  		    restore_cmdline(&save_ccline);
053fea2
- 		    len = (int)STRLEN(p);
053fea2
  
053fea2
! 		    if (p != NULL && realloc_cmdbuff(len + 1) == OK)
053fea2
  		    {
053fea2
! 			ccline.cmdlen = len;
053fea2
! 			STRCPY(ccline.cmdbuff, p);
053fea2
! 			vim_free(p);
053fea2
! 
053fea2
! 			/* Restore the cursor or use the position set with
053fea2
! 			 * set_cmdline_pos(). */
053fea2
! 			if (new_cmdpos > ccline.cmdlen)
053fea2
! 			    ccline.cmdpos = ccline.cmdlen;
053fea2
! 			else
053fea2
! 			    ccline.cmdpos = new_cmdpos;
053fea2
! 
053fea2
! 			KeyTyped = FALSE;	/* Don't do p_wc completion. */
053fea2
! 			redrawcmd();
053fea2
! 			goto cmdline_changed;
053fea2
  		    }
053fea2
  		}
053fea2
  		beep_flush();
053fea2
--- 688,714 ----
053fea2
  		    p = get_expr_line();
053fea2
  		    --textlock;
053fea2
  		    restore_cmdline(&save_ccline);
053fea2
  
053fea2
! 		    if (p != NULL)
053fea2
  		    {
053fea2
! 			len = (int)STRLEN(p);
053fea2
! 			if (realloc_cmdbuff(len + 1) == OK)
053fea2
! 			{
053fea2
! 			    ccline.cmdlen = len;
053fea2
! 			    STRCPY(ccline.cmdbuff, p);
053fea2
! 			    vim_free(p);
053fea2
! 
053fea2
! 			    /* Restore the cursor or use the position set with
053fea2
! 			     * set_cmdline_pos(). */
053fea2
! 			    if (new_cmdpos > ccline.cmdlen)
053fea2
! 				ccline.cmdpos = ccline.cmdlen;
053fea2
! 			    else
053fea2
! 				ccline.cmdpos = new_cmdpos;
053fea2
! 
053fea2
! 			    KeyTyped = FALSE;	/* Don't do p_wc completion. */
053fea2
! 			    redrawcmd();
053fea2
! 			    goto cmdline_changed;
053fea2
! 			}
053fea2
  		    }
053fea2
  		}
053fea2
  		beep_flush();
053fea2
*** ../vim-7.3.038/src/version.c	2010-10-27 12:33:12.000000000 +0200
053fea2
--- src/version.c	2010-10-27 12:43:40.000000000 +0200
053fea2
***************
053fea2
*** 716,717 ****
053fea2
--- 716,719 ----
053fea2
  {   /* Add new patch number below this line */
053fea2
+ /**/
053fea2
+     39,
053fea2
  /**/
053fea2
053fea2
-- 
053fea2
"Hegel was right when he said that we learn from history that man can
053fea2
never learn anything from history."       (George Bernard Shaw)
053fea2
053fea2
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
053fea2
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
053fea2
\\\        download, build and distribute -- http://www.A-A-P.org        ///
053fea2
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///