Blob Blame History Raw
To: vim_dev@googlegroups.com
Subject: Patch 7.3.400
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.400
Problem:    Compiler warnings for shadowed variables.
Solution:   Remove or rename the variables.
Files:	    src/charset.c, src/digraph.c, src/edit.c, src/eval.c, src/fold.c,
	    src/getchar.c, src/message.c, src/misc2.c, src/move.c,
	    src/netbeans.c, src/option.c, src/os_unix.c, src/screen.c,
	    src/search.c, src/spell.c, src/syntax.c, src/tag.c, src/window.c


*** ../vim-7.3.399/src/charset.c	2010-08-15 21:57:25.000000000 +0200
--- src/charset.c	2012-01-10 21:55:50.000000000 +0100
***************
*** 463,503 ****
  	    if (enc_utf8)
  	    {
  		int	c = utf_ptr2char(STR_PTR(i));
! 		int	ol = utf_ptr2len(STR_PTR(i));
  		int	lc = utf_tolower(c);
  
  		/* Only replace the character when it is not an invalid
  		 * sequence (ASCII character or more than one byte) and
  		 * utf_tolower() doesn't return the original character. */
! 		if ((c < 0x80 || ol > 1) && c != lc)
  		{
! 		    int	    nl = utf_char2len(lc);
  
  		    /* If the byte length changes need to shift the following
  		     * characters forward or backward. */
! 		    if (ol != nl)
  		    {
! 			if (nl > ol)
  			{
! 			    if (buf == NULL ? ga_grow(&ga, nl - ol + 1) == FAIL
! 						    : len + nl - ol >= buflen)
  			    {
  				/* out of memory, keep old char */
  				lc = c;
! 				nl = ol;
  			    }
  			}
! 			if (ol != nl)
  			{
  			    if (buf == NULL)
  			    {
! 				STRMOVE(GA_PTR(i) + nl, GA_PTR(i) + ol);
! 				ga.ga_len += nl - ol;
  			    }
  			    else
  			    {
! 				STRMOVE(buf + i + nl, buf + i + ol);
! 				len += nl - ol;
  			    }
  			}
  		    }
--- 463,504 ----
  	    if (enc_utf8)
  	    {
  		int	c = utf_ptr2char(STR_PTR(i));
! 		int	olen = utf_ptr2len(STR_PTR(i));
  		int	lc = utf_tolower(c);
  
  		/* Only replace the character when it is not an invalid
  		 * sequence (ASCII character or more than one byte) and
  		 * utf_tolower() doesn't return the original character. */
! 		if ((c < 0x80 || olen > 1) && c != lc)
  		{
! 		    int	    nlen = utf_char2len(lc);
  
  		    /* If the byte length changes need to shift the following
  		     * characters forward or backward. */
! 		    if (olen != nlen)
  		    {
! 			if (nlen > olen)
  			{
! 			    if (buf == NULL
! 				    ? ga_grow(&ga, nlen - olen + 1) == FAIL
! 				    : len + nlen - olen >= buflen)
  			    {
  				/* out of memory, keep old char */
  				lc = c;
! 				nlen = olen;
  			    }
  			}
! 			if (olen != nlen)
  			{
  			    if (buf == NULL)
  			    {
! 				STRMOVE(GA_PTR(i) + nlen, GA_PTR(i) + olen);
! 				ga.ga_len += nlen - olen;
  			    }
  			    else
  			    {
! 				STRMOVE(buf + i + nlen, buf + i + olen);
! 				len += nlen - olen;
  			    }
  			}
  		    }
*** ../vim-7.3.399/src/digraph.c	2010-08-15 21:57:28.000000000 +0200
--- src/digraph.c	2012-01-10 21:57:16.000000000 +0100
***************
*** 2080,2092 ****
  /*
   * Lookup the pair "char1", "char2" in the digraph tables.
   * If no match, return "char2".
!  * If "meta" is TRUE and "char1" is a space, return "char2" | 0x80.
   */
      static int
! getexactdigraph(char1, char2, meta)
      int		char1;
      int		char2;
!     int		meta;
  {
      int		i;
      int		retval = 0;
--- 2080,2092 ----
  /*
   * Lookup the pair "char1", "char2" in the digraph tables.
   * If no match, return "char2".
!  * If "meta_char" is TRUE and "char1" is a space, return "char2" | 0x80.
   */
      static int
! getexactdigraph(char1, char2, meta_char)
      int		char1;
      int		char2;
!     int		meta_char;
  {
      int		i;
      int		retval = 0;
***************
*** 2159,2165 ****
  
      if (retval == 0)		/* digraph deleted or not found */
      {
! 	if (char1 == ' ' && meta)	/* <space> <char> --> meta-char */
  	    return (char2 | 0x80);
  	return char2;
      }
--- 2159,2165 ----
  
      if (retval == 0)		/* digraph deleted or not found */
      {
! 	if (char1 == ' ' && meta_char)	/* <space> <char> --> meta-char */
  	    return (char2 | 0x80);
  	return char2;
      }
***************
*** 2171,2186 ****
   * Allow for both char1-char2 and char2-char1
   */
      int
! getdigraph(char1, char2, meta)
      int	char1;
      int	char2;
!     int	meta;
  {
      int	    retval;
  
!     if (((retval = getexactdigraph(char1, char2, meta)) == char2)
  	    && (char1 != char2)
! 	    && ((retval = getexactdigraph(char2, char1, meta)) == char1))
  	return char2;
      return retval;
  }
--- 2171,2186 ----
   * Allow for both char1-char2 and char2-char1
   */
      int
! getdigraph(char1, char2, meta_char)
      int	char1;
      int	char2;
!     int	meta_char;
  {
      int	    retval;
  
!     if (((retval = getexactdigraph(char1, char2, meta_char)) == char2)
  	    && (char1 != char2)
! 	    && ((retval = getexactdigraph(char2, char1, meta_char)) == char1))
  	return char2;
      return retval;
  }
*** ../vim-7.3.399/src/edit.c	2011-12-23 13:14:58.000000000 +0100
--- src/edit.c	2012-01-10 21:58:28.000000000 +0100
***************
*** 4003,4026 ****
  ins_compl_add_dict(dict)
      dict_T	*dict;
  {
!     dictitem_T	*refresh;
!     dictitem_T	*words;
  
      /* Check for optional "refresh" item. */
      compl_opt_refresh_always = FALSE;
!     refresh = dict_find(dict, (char_u *)"refresh", 7);
!     if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING)
      {
! 	char_u	*v = refresh->di_tv.vval.v_string;
  
  	if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
  	    compl_opt_refresh_always = TRUE;
      }
  
      /* Add completions from a "words" list. */
!     words = dict_find(dict, (char_u *)"words", 5);
!     if (words != NULL && words->di_tv.v_type == VAR_LIST)
! 	ins_compl_add_list(words->di_tv.vval.v_list);
  }
  
  /*
--- 4003,4026 ----
  ins_compl_add_dict(dict)
      dict_T	*dict;
  {
!     dictitem_T	*di_refresh;
!     dictitem_T	*di_words;
  
      /* Check for optional "refresh" item. */
      compl_opt_refresh_always = FALSE;
!     di_refresh = dict_find(dict, (char_u *)"refresh", 7);
!     if (di_refresh != NULL && di_refresh->di_tv.v_type == VAR_STRING)
      {
! 	char_u	*v = di_refresh->di_tv.vval.v_string;
  
  	if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
  	    compl_opt_refresh_always = TRUE;
      }
  
      /* Add completions from a "words" list. */
!     di_words = dict_find(dict, (char_u *)"words", 5);
!     if (di_words != NULL && di_words->di_tv.v_type == VAR_LIST)
! 	ins_compl_add_list(di_words->di_tv.vval.v_list);
  }
  
  /*
*** ../vim-7.3.399/src/eval.c	2012-01-04 14:35:31.000000000 +0100
--- src/eval.c	2012-01-10 22:00:50.000000000 +0100
***************
*** 6573,6587 ****
  
  /*
   * Join list "l" into a string in "*gap", using separator "sep".
!  * When "echo" is TRUE use String as echoed, otherwise as inside a List.
   * Return FAIL or OK.
   */
      static int
! list_join(gap, l, sep, echo, copyID)
      garray_T	*gap;
      list_T	*l;
      char_u	*sep;
!     int		echo;
      int		copyID;
  {
      int		first = TRUE;
--- 6573,6587 ----
  
  /*
   * Join list "l" into a string in "*gap", using separator "sep".
!  * When "echo_style" is TRUE use String as echoed, otherwise as inside a List.
   * Return FAIL or OK.
   */
      static int
! list_join(gap, l, sep, echo_style, copyID)
      garray_T	*gap;
      list_T	*l;
      char_u	*sep;
!     int		echo_style;
      int		copyID;
  {
      int		first = TRUE;
***************
*** 6597,6603 ****
  	else
  	    ga_concat(gap, sep);
  
! 	if (echo)
  	    s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
  	else
  	    s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
--- 6597,6603 ----
  	else
  	    ga_concat(gap, sep);
  
! 	if (echo_style)
  	    s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
  	else
  	    s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
***************
*** 17893,17899 ****
      typval_T	*argvars;
      typval_T	*rettv;
  {
!     char_u	*instr;
      char_u	*fromstr;
      char_u	*tostr;
      char_u	*p;
--- 17893,17899 ----
      typval_T	*argvars;
      typval_T	*rettv;
  {
!     char_u	*in_str;
      char_u	*fromstr;
      char_u	*tostr;
      char_u	*p;
***************
*** 17910,17916 ****
      char_u	buf2[NUMBUFLEN];
      garray_T	ga;
  
!     instr = get_tv_string(&argvars[0]);
      fromstr = get_tv_string_buf_chk(&argvars[1], buf);
      tostr = get_tv_string_buf_chk(&argvars[2], buf2);
  
--- 17910,17916 ----
      char_u	buf2[NUMBUFLEN];
      garray_T	ga;
  
!     in_str = get_tv_string(&argvars[0]);
      fromstr = get_tv_string_buf_chk(&argvars[1], buf);
      tostr = get_tv_string_buf_chk(&argvars[2], buf2);
  
***************
*** 17936,17954 ****
  	}
  
      /* fromstr and tostr have to contain the same number of chars */
!     while (*instr != NUL)
      {
  #ifdef FEAT_MBYTE
  	if (has_mbyte)
  	{
! 	    inlen = (*mb_ptr2len)(instr);
! 	    cpstr = instr;
  	    cplen = inlen;
  	    idx = 0;
  	    for (p = fromstr; *p != NUL; p += fromlen)
  	    {
  		fromlen = (*mb_ptr2len)(p);
! 		if (fromlen == inlen && STRNCMP(instr, p, inlen) == 0)
  		{
  		    for (p = tostr; *p != NUL; p += tolen)
  		    {
--- 17936,17954 ----
  	}
  
      /* fromstr and tostr have to contain the same number of chars */
!     while (*in_str != NUL)
      {
  #ifdef FEAT_MBYTE
  	if (has_mbyte)
  	{
! 	    inlen = (*mb_ptr2len)(in_str);
! 	    cpstr = in_str;
  	    cplen = inlen;
  	    idx = 0;
  	    for (p = fromstr; *p != NUL; p += fromlen)
  	    {
  		fromlen = (*mb_ptr2len)(p);
! 		if (fromlen == inlen && STRNCMP(in_str, p, inlen) == 0)
  		{
  		    for (p = tostr; *p != NUL; p += tolen)
  		    {
***************
*** 17967,17977 ****
  		++idx;
  	    }
  
! 	    if (first && cpstr == instr)
  	    {
  		/* Check that fromstr and tostr have the same number of
  		 * (multi-byte) characters.  Done only once when a character
! 		 * of instr doesn't appear in fromstr. */
  		first = FALSE;
  		for (p = tostr; *p != NUL; p += tolen)
  		{
--- 17967,17977 ----
  		++idx;
  	    }
  
! 	    if (first && cpstr == in_str)
  	    {
  		/* Check that fromstr and tostr have the same number of
  		 * (multi-byte) characters.  Done only once when a character
! 		 * of in_str doesn't appear in fromstr. */
  		first = FALSE;
  		for (p = tostr; *p != NUL; p += tolen)
  		{
***************
*** 17986,18003 ****
  	    mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen);
  	    ga.ga_len += cplen;
  
! 	    instr += inlen;
  	}
  	else
  #endif
  	{
  	    /* When not using multi-byte chars we can do it faster. */
! 	    p = vim_strchr(fromstr, *instr);
  	    if (p != NULL)
  		ga_append(&ga, tostr[p - fromstr]);
  	    else
! 		ga_append(&ga, *instr);
! 	    ++instr;
  	}
      }
  
--- 17986,18003 ----
  	    mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen);
  	    ga.ga_len += cplen;
  
! 	    in_str += inlen;
  	}
  	else
  #endif
  	{
  	    /* When not using multi-byte chars we can do it faster. */
! 	    p = vim_strchr(fromstr, *in_str);
  	    if (p != NULL)
  		ga_append(&ga, tostr[p - fromstr]);
  	    else
! 		ga_append(&ga, *in_str);
! 	    ++in_str;
  	}
      }
  
*** ../vim-7.3.399/src/fold.c	2011-08-26 16:12:55.000000000 +0200
--- src/fold.c	2012-01-10 22:01:26.000000000 +0100
***************
*** 1033,1042 ****
   * Init the fold info in a new window.
   */
      void
! foldInitWin(newwin)
!     win_T	*newwin;
  {
!     ga_init2(&newwin->w_folds, (int)sizeof(fold_T), 10);
  }
  
  /* find_wl_entry() {{{2 */
--- 1033,1042 ----
   * Init the fold info in a new window.
   */
      void
! foldInitWin(new_win)
!     win_T	*new_win;
  {
!     ga_init2(&new_win->w_folds, (int)sizeof(fold_T), 10);
  }
  
  /* find_wl_entry() {{{2 */
*** ../vim-7.3.399/src/getchar.c	2011-12-23 14:54:01.000000000 +0100
--- src/getchar.c	2012-01-10 22:02:30.000000000 +0100
***************
*** 418,429 ****
  
  /*
   * Remove the contents of the stuff buffer and the mapped characters in the
!  * typeahead buffer (used in case of an error).  If 'typeahead' is true,
   * flush all typeahead characters (used when interrupted by a CTRL-C).
   */
      void
! flush_buffers(typeahead)
!     int typeahead;
  {
      init_typebuf();
  
--- 418,429 ----
  
  /*
   * Remove the contents of the stuff buffer and the mapped characters in the
!  * typeahead buffer (used in case of an error).  If "flush_typeahead" is true,
   * flush all typeahead characters (used when interrupted by a CTRL-C).
   */
      void
! flush_buffers(flush_typeahead)
!     int flush_typeahead;
  {
      init_typebuf();
  
***************
*** 431,437 ****
      while (read_stuff(TRUE) != NUL)
  	;
  
!     if (typeahead)	    /* remove all typeahead */
      {
  	/*
  	 * We have to get all characters, because we may delete the first part
--- 431,437 ----
      while (read_stuff(TRUE) != NUL)
  	;
  
!     if (flush_typeahead)	    /* remove all typeahead */
      {
  	/*
  	 * We have to get all characters, because we may delete the first part
*** ../vim-7.3.399/src/message.c	2011-12-30 14:14:16.000000000 +0100
--- src/message.c	2012-01-10 22:03:56.000000000 +0100
***************
*** 2487,2493 ****
  #ifdef FEAT_CON_DIALOG
      int		retval = FALSE;
  #endif
!     int		scroll;
      msgchunk_T	*mp_last = NULL;
      msgchunk_T	*mp;
      int		i;
--- 2487,2493 ----
  #ifdef FEAT_CON_DIALOG
      int		retval = FALSE;
  #endif
!     int		toscroll;
      msgchunk_T	*mp_last = NULL;
      msgchunk_T	*mp;
      int		i;
***************
*** 2538,2586 ****
  	}
  #endif
  
! 	scroll = 0;
  	switch (c)
  	{
  	case BS:		/* scroll one line back */
  	case K_BS:
  	case 'k':
  	case K_UP:
! 	    scroll = -1;
  	    break;
  
  	case CAR:		/* one extra line */
  	case NL:
  	case 'j':
  	case K_DOWN:
! 	    scroll = 1;
  	    break;
  
  	case 'u':		/* Up half a page */
! 	    scroll = -(Rows / 2);
  	    break;
  
  	case 'd':		/* Down half a page */
! 	    scroll = Rows / 2;
  	    break;
  
  	case 'b':		/* one page back */
  	case K_PAGEUP:
! 	    scroll = -(Rows - 1);
  	    break;
  
  	case ' ':		/* one extra page */
  	case 'f':
  	case K_PAGEDOWN:
  	case K_LEFTMOUSE:
! 	    scroll = Rows - 1;
  	    break;
  
  	case 'g':		/* all the way back to the start */
! 	    scroll = -999999;
  	    break;
  
  	case 'G':		/* all the way to the end */
! 	    scroll = 999999;
  	    lines_left = 999999;
  	    break;
  
--- 2538,2586 ----
  	}
  #endif
  
! 	toscroll = 0;
  	switch (c)
  	{
  	case BS:		/* scroll one line back */
  	case K_BS:
  	case 'k':
  	case K_UP:
! 	    toscroll = -1;
  	    break;
  
  	case CAR:		/* one extra line */
  	case NL:
  	case 'j':
  	case K_DOWN:
! 	    toscroll = 1;
  	    break;
  
  	case 'u':		/* Up half a page */
! 	    toscroll = -(Rows / 2);
  	    break;
  
  	case 'd':		/* Down half a page */
! 	    toscroll = Rows / 2;
  	    break;
  
  	case 'b':		/* one page back */
  	case K_PAGEUP:
! 	    toscroll = -(Rows - 1);
  	    break;
  
  	case ' ':		/* one extra page */
  	case 'f':
  	case K_PAGEDOWN:
  	case K_LEFTMOUSE:
! 	    toscroll = Rows - 1;
  	    break;
  
  	case 'g':		/* all the way back to the start */
! 	    toscroll = -999999;
  	    break;
  
  	case 'G':		/* all the way to the end */
! 	    toscroll = 999999;
  	    lines_left = 999999;
  	    break;
  
***************
*** 2633,2641 ****
  	    continue;
  	}
  
! 	if (scroll != 0)
  	{
! 	    if (scroll < 0)
  	    {
  		/* go to start of last line */
  		if (mp_last == NULL)
--- 2633,2641 ----
  	    continue;
  	}
  
! 	if (toscroll != 0)
  	{
! 	    if (toscroll < 0)
  	    {
  		/* go to start of last line */
  		if (mp_last == NULL)
***************
*** 2653,2659 ****
  		if (mp != NULL && mp->sb_prev != NULL)
  		{
  		    /* Find line to be displayed at top. */
! 		    for (i = 0; i > scroll; --i)
  		    {
  			if (mp == NULL || mp->sb_prev == NULL)
  			    break;
--- 2653,2659 ----
  		if (mp != NULL && mp->sb_prev != NULL)
  		{
  		    /* Find line to be displayed at top. */
! 		    for (i = 0; i > toscroll; --i)
  		    {
  			if (mp == NULL || mp->sb_prev == NULL)
  			    break;
***************
*** 2664,2670 ****
  			    mp_last = msg_sb_start(mp_last->sb_prev);
  		    }
  
! 		    if (scroll == -1 && screen_ins_lines(0, 0, 1,
  						       (int)Rows, NULL) == OK)
  		    {
  			/* display line at top */
--- 2664,2670 ----
  			    mp_last = msg_sb_start(mp_last->sb_prev);
  		    }
  
! 		    if (toscroll == -1 && screen_ins_lines(0, 0, 1,
  						       (int)Rows, NULL) == OK)
  		    {
  			/* display line at top */
***************
*** 2680,2692 ****
  			    ++msg_scrolled;
  			}
  		    }
! 		    scroll = 0;
  		}
  	    }
  	    else
  	    {
  		/* First display any text that we scrolled back. */
! 		while (scroll > 0 && mp_last != NULL)
  		{
  		    /* scroll up, display line at bottom */
  		    msg_scroll_up();
--- 2680,2692 ----
  			    ++msg_scrolled;
  			}
  		    }
! 		    toscroll = 0;
  		}
  	    }
  	    else
  	    {
  		/* First display any text that we scrolled back. */
! 		while (toscroll > 0 && mp_last != NULL)
  		{
  		    /* scroll up, display line at bottom */
  		    msg_scroll_up();
***************
*** 2694,2704 ****
  		    screen_fill((int)Rows - 2, (int)Rows - 1, 0,
  						   (int)Columns, ' ', ' ', 0);
  		    mp_last = disp_sb_line((int)Rows - 2, mp_last);
! 		    --scroll;
  		}
  	    }
  
! 	    if (scroll <= 0)
  	    {
  		/* displayed the requested text, more prompt again */
  		screen_fill((int)Rows - 1, (int)Rows, 0,
--- 2694,2704 ----
  		    screen_fill((int)Rows - 2, (int)Rows - 1, 0,
  						   (int)Columns, ' ', ' ', 0);
  		    mp_last = disp_sb_line((int)Rows - 2, mp_last);
! 		    --toscroll;
  		}
  	    }
  
! 	    if (toscroll <= 0)
  	    {
  		/* displayed the requested text, more prompt again */
  		screen_fill((int)Rows - 1, (int)Rows, 0,
***************
*** 2708,2714 ****
  	    }
  
  	    /* display more text, return to caller */
! 	    lines_left = scroll;
  	}
  
  	break;
--- 2708,2714 ----
  	    }
  
  	    /* display more text, return to caller */
! 	    lines_left = toscroll;
  	}
  
  	break;
*** ../vim-7.3.399/src/misc2.c	2012-01-10 16:28:41.000000000 +0100
--- src/misc2.c	2012-01-10 22:04:25.000000000 +0100
***************
*** 1559,1565 ****
  	    if (enc_utf8)
  	    {
  		int	c, uc;
! 		int	nl;
  		char_u	*s;
  
  		c = utf_ptr2char(p);
--- 1559,1565 ----
  	    if (enc_utf8)
  	    {
  		int	c, uc;
! 		int	newl;
  		char_u	*s;
  
  		c = utf_ptr2char(p);
***************
*** 1568,1588 ****
  		/* Reallocate string when byte count changes.  This is rare,
  		 * thus it's OK to do another malloc()/free(). */
  		l = utf_ptr2len(p);
! 		nl = utf_char2len(uc);
! 		if (nl != l)
  		{
! 		    s = alloc((unsigned)STRLEN(res) + 1 + nl - l);
  		    if (s == NULL)
  			break;
  		    mch_memmove(s, res, p - res);
! 		    STRCPY(s + (p - res) + nl, p + l);
  		    p = s + (p - res);
  		    vim_free(res);
  		    res = s;
  		}
  
  		utf_char2bytes(uc, p);
! 		p += nl;
  	    }
  	    else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
  		p += l;		/* skip multi-byte character */
--- 1568,1588 ----
  		/* Reallocate string when byte count changes.  This is rare,
  		 * thus it's OK to do another malloc()/free(). */
  		l = utf_ptr2len(p);
! 		newl = utf_char2len(uc);
! 		if (newl != l)
  		{
! 		    s = alloc((unsigned)STRLEN(res) + 1 + newl - l);
  		    if (s == NULL)
  			break;
  		    mch_memmove(s, res, p - res);
! 		    STRCPY(s + (p - res) + newl, p + l);
  		    p = s + (p - res);
  		    vim_free(res);
  		    res = s;
  		}
  
  		utf_char2bytes(uc, p);
! 		p += newl;
  	    }
  	    else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
  		p += l;		/* skip multi-byte character */
*** ../vim-7.3.399/src/move.c	2011-02-01 18:01:06.000000000 +0100
--- src/move.c	2012-01-10 22:05:22.000000000 +0100
***************
*** 926,933 ****
   * Also updates curwin->w_leftcol.
   */
      void
! curs_columns(scroll)
!     int		scroll;		/* when TRUE, may scroll horizontally */
  {
      int		diff;
      int		extra;		/* offset for first screen line */
--- 926,933 ----
   * Also updates curwin->w_leftcol.
   */
      void
! curs_columns(may_scroll)
!     int		may_scroll;	/* when TRUE, may scroll horizontally */
  {
      int		diff;
      int		extra;		/* offset for first screen line */
***************
*** 1014,1020 ****
      /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line
       * is not folded.
       * If scrolling is off, curwin->w_leftcol is assumed to be 0 */
!     else if (scroll
  #ifdef FEAT_FOLDING
  	    && !curwin->w_cline_folded
  #endif
--- 1014,1020 ----
      /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line
       * is not folded.
       * If scrolling is off, curwin->w_leftcol is assumed to be 0 */
!     else if (may_scroll
  #ifdef FEAT_FOLDING
  	    && !curwin->w_cline_folded
  #endif
*** ../vim-7.3.399/src/netbeans.c	2011-10-20 21:58:20.000000000 +0200
--- src/netbeans.c	2012-01-10 22:16:26.000000000 +0100
***************
*** 1395,1401 ****
      int		cmdno,
      char_u	*args)	    /* points to space before arguments or NUL */
  {
!     int		doupdate = 0;
      long	off = 0;
      nbbuf_T	*buf = nb_get_buf(bufno);
      static int	skip = 0;
--- 1395,1401 ----
      int		cmdno,
      char_u	*args)	    /* points to space before arguments or NUL */
  {
!     int		do_update = 0;
      long	off = 0;
      nbbuf_T	*buf = nb_get_buf(bufno);
      static int	skip = 0;
***************
*** 1600,1606 ****
  							last.lnum, last.col));
  		del_from_lnum = first.lnum;
  		del_to_lnum = last.lnum;
! 		doupdate = 1;
  
  		/* Get the position of the first byte after the deleted
  		 * section.  "next" is NULL when deleting to the end of the
--- 1600,1606 ----
  							last.lnum, last.col));
  		del_from_lnum = first.lnum;
  		del_to_lnum = last.lnum;
! 		do_update = 1;
  
  		/* Get the position of the first byte after the deleted
  		 * section.  "next" is NULL when deleting to the end of the
***************
*** 1777,1783 ****
  		lnum = lnum_start;
  
  		/* Loop over the "\n" separated lines of the argument. */
! 		doupdate = 1;
  		while (*args != NUL)
  		{
  		    nl = vim_strchr(args, '\n');
--- 1777,1783 ----
  		lnum = lnum_start;
  
  		/* Loop over the "\n" separated lines of the argument. */
! 		do_update = 1;
  		while (*args != NUL)
  		{
  		    nl = vim_strchr(args, '\n');
***************
*** 1992,1998 ****
  		EMSG("E640: invalid buffer identifier in initDone");
  		return FAIL;
  	    }
! 	    doupdate = 1;
  	    buf->initDone = TRUE;
  	    nb_set_curbuf(buf->bufp);
  #if defined(FEAT_AUTOCMD)
--- 1992,1998 ----
  		EMSG("E640: invalid buffer identifier in initDone");
  		return FAIL;
  	    }
! 	    do_update = 1;
  	    buf->initDone = TRUE;
  	    nb_set_curbuf(buf->bufp);
  #if defined(FEAT_AUTOCMD)
***************
*** 2081,2087 ****
  					     ECMD_HIDE + ECMD_OLDBUF, curwin);
  	    buf->bufp = curbuf;
  	    buf->initDone = TRUE;
! 	    doupdate = 1;
  #if defined(FEAT_TITLE)
  	    maketitle();
  #endif
--- 2081,2087 ----
  					     ECMD_HIDE + ECMD_OLDBUF, curwin);
  	    buf->bufp = curbuf;
  	    buf->initDone = TRUE;
! 	    do_update = 1;
  #if defined(FEAT_TITLE)
  	    maketitle();
  #endif
***************
*** 2109,2115 ****
  		exarg.forceit = FALSE;
  		dosetvisible = TRUE;
  		goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum);
! 		doupdate = 1;
  		dosetvisible = FALSE;
  
  #ifdef FEAT_GUI
--- 2109,2115 ----
  		exarg.forceit = FALSE;
  		dosetvisible = TRUE;
  		goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum);
! 		do_update = 1;
  		dosetvisible = FALSE;
  
  #ifdef FEAT_GUI
***************
*** 2309,2315 ****
  						     buf->bufp->b_fnum, TRUE);
  	    buf->bufp = NULL;
  	    buf->initDone = FALSE;
! 	    doupdate = 1;
  /* =====================================================================*/
  	}
  	else if (streq((char *)cmd, "setStyle")) /* obsolete... */
--- 2309,2315 ----
  						     buf->bufp->b_fnum, TRUE);
  	    buf->bufp = NULL;
  	    buf->initDone = FALSE;
! 	    do_update = 1;
  /* =====================================================================*/
  	}
  	else if (streq((char *)cmd, "setStyle")) /* obsolete... */
***************
*** 2400,2406 ****
  		return FAIL;
  	    }
  
! 	    doupdate = 1;
  
  	    cp = (char *)args;
  	    serNum = strtol(cp, &cp, 10);
--- 2400,2406 ----
  		return FAIL;
  	    }
  
! 	    do_update = 1;
  
  	    cp = (char *)args;
  	    serNum = strtol(cp, &cp, 10);
***************
*** 2448,2454 ****
  		nbdebug(("    invalid buffer identifier in removeAnno\n"));
  		return FAIL;
  	    }
! 	    doupdate = 1;
  	    cp = (char *)args;
  	    serNum = strtol(cp, &cp, 10);
  	    args = (char_u *)cp;
--- 2448,2454 ----
  		nbdebug(("    invalid buffer identifier in removeAnno\n"));
  		return FAIL;
  	    }
! 	    do_update = 1;
  	    cp = (char *)args;
  	    serNum = strtol(cp, &cp, 10);
  	    args = (char_u *)cp;
***************
*** 2493,2499 ****
  	    len = strtol(cp, NULL, 10);
  	    args = (char_u *)cp;
  	    pos = off2pos(buf->bufp, off);
! 	    doupdate = 1;
  	    if (!pos)
  		nbdebug(("    no such start pos in %s, %ld\n", cmd, off));
  	    else
--- 2493,2499 ----
  	    len = strtol(cp, NULL, 10);
  	    args = (char_u *)cp;
  	    pos = off2pos(buf->bufp, off);
! 	    do_update = 1;
  	    if (!pos)
  		nbdebug(("    no such start pos in %s, %ld\n", cmd, off));
  	    else
***************
*** 2555,2561 ****
  	    inAtomic = 0;
  	    if (needupdate)
  	    {
! 		doupdate = 1;
  		needupdate = 0;
  	    }
  /* =====================================================================*/
--- 2555,2561 ----
  	    inAtomic = 0;
  	    if (needupdate)
  	    {
! 		do_update = 1;
  		needupdate = 0;
  	    }
  /* =====================================================================*/
***************
*** 2636,2653 ****
  	 * Unrecognized command is ignored.
  	 */
      }
!     if (inAtomic && doupdate)
      {
  	needupdate = 1;
! 	doupdate = 0;
      }
  
      /*
       * Is this needed? I moved the netbeans_Xt_connect() later during startup
       * and it may no longer be necessary. If its not needed then needupdate
!      * and doupdate can also be removed.
       */
!     if (buf != NULL && buf->initDone && doupdate)
      {
  	update_screen(NOT_VALID);
  	setcursor();
--- 2636,2653 ----
  	 * Unrecognized command is ignored.
  	 */
      }
!     if (inAtomic && do_update)
      {
  	needupdate = 1;
! 	do_update = 0;
      }
  
      /*
       * Is this needed? I moved the netbeans_Xt_connect() later during startup
       * and it may no longer be necessary. If its not needed then needupdate
!      * and do_update can also be removed.
       */
!     if (buf != NULL && buf->initDone && do_update)
      {
  	update_screen(NOT_VALID);
  	setcursor();
*** ../vim-7.3.399/src/option.c	2012-01-04 19:34:32.000000000 +0100
--- src/option.c	2012-01-10 22:06:03.000000000 +0100
***************
*** 8584,8591 ****
      long_u	flags;
  {
      /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */
!     int		clear = (flags & P_RCLR) == P_RCLR;
!     int		all = ((flags & P_RALL) == P_RALL || clear);
  
  #ifdef FEAT_WINDOWS
      if ((flags & P_RSTAT) || all)	/* mark all status lines dirty */
--- 8584,8591 ----
      long_u	flags;
  {
      /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */
!     int		doclear = (flags & P_RCLR) == P_RCLR;
!     int		all = ((flags & P_RALL) == P_RALL || doclear);
  
  #ifdef FEAT_WINDOWS
      if ((flags & P_RSTAT) || all)	/* mark all status lines dirty */
***************
*** 8596,8602 ****
  	changed_window_setting();
      if (flags & P_RBUF)
  	redraw_curbuf_later(NOT_VALID);
!     if (clear)
  	redraw_all_later(CLEAR);
      else if (all)
  	redraw_all_later(NOT_VALID);
--- 8596,8602 ----
  	changed_window_setting();
      if (flags & P_RBUF)
  	redraw_curbuf_later(NOT_VALID);
!     if (doclear)
  	redraw_all_later(CLEAR);
      else if (all)
  	redraw_all_later(NOT_VALID);
*** ../vim-7.3.399/src/os_unix.c	2011-10-20 21:09:25.000000000 +0200
--- src/os_unix.c	2012-01-10 21:48:49.000000000 +0100
***************
*** 3884,3890 ****
      char_u	*p_shcf_copy = NULL;
      int		i;
      char_u	*p;
-     char_u	*s;
      int		inquote;
      int		pty_master_fd = -1;	    /* for pty's */
  # ifdef FEAT_GUI
--- 3884,3889 ----
***************
*** 3963,3968 ****
--- 3962,3969 ----
      }
      if (cmd != NULL)
      {
+ 	char_u	*s;
+ 
  	if (extra_shell_arg != NULL)
  	    argv[argc++] = (char *)extra_shell_arg;
  
***************
*** 4325,4331 ****
  			linenr_T    lnum = curbuf->b_op_start.lnum;
  			int	    written = 0;
  			char_u	    *lp = ml_get(lnum);
- 			char_u	    *s;
  			size_t	    l;
  
  			close(fromshell_fd);
--- 4326,4331 ----
***************
*** 4339,4345 ****
  				len = write(toshell_fd, "", (size_t)1);
  			    else
  			    {
! 				s = vim_strchr(lp + written, NL);
  				len = write(toshell_fd, (char *)lp + written,
  					   s == NULL ? l
  					      : (size_t)(s - (lp + written)));
--- 4339,4346 ----
  				len = write(toshell_fd, "", (size_t)1);
  			    else
  			    {
! 				char_u	*s = vim_strchr(lp + written, NL);
! 
  				len = write(toshell_fd, (char *)lp + written,
  					   s == NULL ? l
  					      : (size_t)(s - (lp + written)));
*** ../vim-7.3.399/src/screen.c	2012-01-10 12:42:05.000000000 +0100
--- src/screen.c	2012-01-10 22:06:51.000000000 +0100
***************
*** 7849,7863 ****
  
  /*
   * screen_valid -  allocate screen buffers if size changed
!  *   If "clear" is TRUE: clear screen if it has been resized.
   *	Returns TRUE if there is a valid screen to write to.
   *	Returns FALSE when starting up and screen not initialized yet.
   */
      int
! screen_valid(clear)
!     int	    clear;
  {
!     screenalloc(clear);	    /* allocate screen buffers if size changed */
      return (ScreenLines != NULL);
  }
  
--- 7849,7863 ----
  
  /*
   * screen_valid -  allocate screen buffers if size changed
!  *   If "doclear" is TRUE: clear screen if it has been resized.
   *	Returns TRUE if there is a valid screen to write to.
   *	Returns FALSE when starting up and screen not initialized yet.
   */
      int
! screen_valid(doclear)
!     int	    doclear;
  {
!     screenalloc(doclear);	   /* allocate screen buffers if size changed */
      return (ScreenLines != NULL);
  }
  
***************
*** 7872,7879 ****
   * final size of the shell is needed.
   */
      void
! screenalloc(clear)
!     int	    clear;
  {
      int		    new_row, old_row;
  #ifdef FEAT_GUI
--- 7872,7879 ----
   * final size of the shell is needed.
   */
      void
! screenalloc(doclear)
!     int	    doclear;
  {
      int		    new_row, old_row;
  #ifdef FEAT_GUI
***************
*** 8069,8075 ****
  	     * (used when resizing the window at the "--more--" prompt or when
  	     * executing an external command, for the GUI).
  	     */
! 	    if (!clear)
  	    {
  		(void)vim_memset(new_ScreenLines + new_row * Columns,
  				      ' ', (size_t)Columns * sizeof(schar_T));
--- 8069,8075 ----
  	     * (used when resizing the window at the "--more--" prompt or when
  	     * executing an external command, for the GUI).
  	     */
! 	    if (!doclear)
  	    {
  		(void)vim_memset(new_ScreenLines + new_row * Columns,
  				      ' ', (size_t)Columns * sizeof(schar_T));
***************
*** 8159,8165 ****
      screen_Columns = Columns;
  
      must_redraw = CLEAR;	/* need to clear the screen later */
!     if (clear)
  	screenclear2();
  
  #ifdef FEAT_GUI
--- 8159,8165 ----
      screen_Columns = Columns;
  
      must_redraw = CLEAR;	/* need to clear the screen later */
!     if (doclear)
  	screenclear2();
  
  #ifdef FEAT_GUI
*** ../vim-7.3.399/src/search.c	2011-10-04 17:00:13.000000000 +0200
--- src/search.c	2012-01-10 22:07:16.000000000 +0100
***************
*** 2402,2425 ****
      {
  	if (vim_strchr(p, ';') != NULL) /* there may be comments */
  	{
! 	    int instr = FALSE;	/* inside of string */
  
  	    p = line;		/* scan from start */
  	    while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL)
  	    {
  		if (*p == '"')
  		{
! 		    if (instr)
  		    {
  			if (*(p - 1) != '\\') /* skip escaped quote */
! 			    instr = FALSE;
  		    }
  		    else if (p == line || ((p - line) >= 2
  				      /* skip #\" form */
  				      && *(p - 1) != '\\' && *(p - 2) != '#'))
! 			instr = TRUE;
  		}
! 		else if (!instr && ((p - line) < 2
  				    || (*(p - 1) != '\\' && *(p - 2) != '#')))
  		    break;	/* found! */
  		++p;
--- 2402,2425 ----
      {
  	if (vim_strchr(p, ';') != NULL) /* there may be comments */
  	{
! 	    int in_str = FALSE;	/* inside of string */
  
  	    p = line;		/* scan from start */
  	    while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL)
  	    {
  		if (*p == '"')
  		{
! 		    if (in_str)
  		    {
  			if (*(p - 1) != '\\') /* skip escaped quote */
! 			    in_str = FALSE;
  		    }
  		    else if (p == line || ((p - line) >= 2
  				      /* skip #\" form */
  				      && *(p - 1) != '\\' && *(p - 2) != '#'))
! 			in_str = TRUE;
  		}
! 		else if (!in_str && ((p - line) < 2
  				    || (*(p - 1) != '\\' && *(p - 2) != '#')))
  		    break;	/* found! */
  		++p;
*** ../vim-7.3.399/src/spell.c	2012-01-10 16:28:41.000000000 +0100
--- src/spell.c	2012-01-10 22:09:23.000000000 +0100
***************
*** 5049,5055 ****
  static int offset2bytes __ARGS((int nr, char_u *buf));
  static int bytes2offset __ARGS((char_u **pp));
  static void sug_write __ARGS((spellinfo_T *spin, char_u *fname));
! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int overwrite, int added_word));
  static void spell_message __ARGS((spellinfo_T *spin, char_u *str));
  static void init_spellfile __ARGS((void));
  
--- 5049,5055 ----
  static int offset2bytes __ARGS((int nr, char_u *buf));
  static int bytes2offset __ARGS((char_u **pp));
  static void sug_write __ARGS((spellinfo_T *spin, char_u *fname));
! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int over_write, int added_word));
  static void spell_message __ARGS((spellinfo_T *spin, char_u *str));
  static void init_spellfile __ARGS((void));
  
***************
*** 9085,9095 ****
   * and ".spl" is appended to make the output file name.
   */
      static void
! mkspell(fcount, fnames, ascii, overwrite, added_word)
      int		fcount;
      char_u	**fnames;
      int		ascii;		    /* -ascii argument given */
!     int		overwrite;	    /* overwrite existing output file */
      int		added_word;	    /* invoked through "zg" */
  {
      char_u	*fname = NULL;
--- 9085,9095 ----
   * and ".spl" is appended to make the output file name.
   */
      static void
! mkspell(fcount, fnames, ascii, over_write, added_word)
      int		fcount;
      char_u	**fnames;
      int		ascii;		    /* -ascii argument given */
!     int		over_write;	    /* overwrite existing output file */
      int		added_word;	    /* invoked through "zg" */
  {
      char_u	*fname = NULL;
***************
*** 9173,9179 ****
      {
  	/* Check for overwriting before doing things that may take a lot of
  	 * time. */
! 	if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
  	{
  	    EMSG(_(e_exists));
  	    goto theend;
--- 9173,9179 ----
      {
  	/* Check for overwriting before doing things that may take a lot of
  	 * time. */
! 	if (!over_write && mch_stat((char *)wfname, &st) >= 0)
  	{
  	    EMSG(_(e_exists));
  	    goto theend;
*** ../vim-7.3.399/src/syntax.c	2011-06-19 04:54:17.000000000 +0200
--- src/syntax.c	2012-01-10 22:10:23.000000000 +0100
***************
*** 4006,4022 ****
  }
  
      static void
! syn_list_flags(nl, flags, attr)
!     struct name_list	*nl;
      int			flags;
      int			attr;
  {
      int		i;
  
!     for (i = 0; nl[i].flag != 0; ++i)
! 	if (flags & nl[i].flag)
  	{
! 	    msg_puts_attr((char_u *)nl[i].name, attr);
  	    msg_putchar(' ');
  	}
  }
--- 4006,4022 ----
  }
  
      static void
! syn_list_flags(nlist, flags, attr)
!     struct name_list	*nlist;
      int			flags;
      int			attr;
  {
      int		i;
  
!     for (i = 0; nlist[i].flag != 0; ++i)
! 	if (flags & nlist[i].flag)
  	{
! 	    msg_puts_attr((char_u *)nlist[i].name, attr);
  	    msg_putchar(' ');
  	}
  }
*** ../vim-7.3.399/src/tag.c	2011-12-14 14:15:12.000000000 +0100
--- src/tag.c	2012-01-10 21:51:05.000000000 +0100
***************
*** 1353,1359 ****
      int		match_count = 0;		/* number of matches found */
      char_u	**matches;
      int		mtt;
-     int		len;
      int		help_save;
  #ifdef FEAT_MULTI_LANG
      int		help_pri = 0;
--- 1353,1358 ----
***************
*** 2235,2240 ****
--- 2234,2241 ----
  		 */
  		if (ga_grow(&ga_match[mtt], 1) == OK)
  		{
+ 		    int len;
+ 
  		    if (help_only)
  		    {
  #ifdef FEAT_MULTI_LANG
*** ../vim-7.3.399/src/window.c	2011-12-30 15:01:55.000000000 +0100
--- src/window.c	2012-01-10 22:11:41.000000000 +0100
***************
*** 683,701 ****
  }
  
  /*
!  * When "newwin" is NULL: split the current window in two.
!  * When "newwin" is not NULL: insert this window at the far
   * top/left/right/bottom.
   * return FAIL for failure, OK otherwise
   */
      int
! win_split_ins(size, flags, newwin, dir)
      int		size;
      int		flags;
!     win_T	*newwin;
      int		dir;
  {
!     win_T	*wp = newwin;
      win_T	*oldwin;
      int		new_size = size;
      int		i;
--- 683,701 ----
  }
  
  /*
!  * When "new_wp" is NULL: split the current window in two.
!  * When "new_wp" is not NULL: insert this window at the far
   * top/left/right/bottom.
   * return FAIL for failure, OK otherwise
   */
      int
! win_split_ins(size, flags, new_wp, dir)
      int		size;
      int		flags;
!     win_T	*new_wp;
      int		dir;
  {
!     win_T	*wp = new_wp;
      win_T	*oldwin;
      int		new_size = size;
      int		i;
***************
*** 718,724 ****
      /* add a status line when p_ls == 1 and splitting the first window */
      if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0)
      {
! 	if (oldwin->w_height <= p_wmh && newwin == NULL)
  	{
  	    EMSG(_(e_noroom));
  	    return FAIL;
--- 718,724 ----
      /* add a status line when p_ls == 1 and splitting the first window */
      if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0)
      {
! 	if (oldwin->w_height <= p_wmh && new_wp == NULL)
  	{
  	    EMSG(_(e_noroom));
  	    return FAIL;
***************
*** 751,757 ****
  	}
  	else
  	    available = oldwin->w_width;
! 	if (available < needed && newwin == NULL)
  	{
  	    EMSG(_(e_noroom));
  	    return FAIL;
--- 751,757 ----
  	}
  	else
  	    available = oldwin->w_width;
! 	if (available < needed && new_wp == NULL)
  	{
  	    EMSG(_(e_noroom));
  	    return FAIL;
***************
*** 815,821 ****
  	    available = oldwin->w_height;
  	    needed += p_wmh;
  	}
! 	if (available < needed && newwin == NULL)
  	{
  	    EMSG(_(e_noroom));
  	    return FAIL;
--- 815,821 ----
  	    available = oldwin->w_height;
  	    needed += p_wmh;
  	}
! 	if (available < needed && new_wp == NULL)
  	{
  	    EMSG(_(e_noroom));
  	    return FAIL;
***************
*** 888,907 ****
  			p_sb))))
      {
  	/* new window below/right of current one */
! 	if (newwin == NULL)
  	    wp = win_alloc(oldwin, FALSE);
  	else
  	    win_append(oldwin, wp);
      }
      else
      {
! 	if (newwin == NULL)
  	    wp = win_alloc(oldwin->w_prev, FALSE);
  	else
  	    win_append(oldwin->w_prev, wp);
      }
  
!     if (newwin == NULL)
      {
  	if (wp == NULL)
  	    return FAIL;
--- 888,907 ----
  			p_sb))))
      {
  	/* new window below/right of current one */
! 	if (new_wp == NULL)
  	    wp = win_alloc(oldwin, FALSE);
  	else
  	    win_append(oldwin, wp);
      }
      else
      {
! 	if (new_wp == NULL)
  	    wp = win_alloc(oldwin->w_prev, FALSE);
  	else
  	    win_append(oldwin->w_prev, wp);
      }
  
!     if (new_wp == NULL)
      {
  	if (wp == NULL)
  	    return FAIL;
***************
*** 972,981 ****
  		frp->fr_parent = curfrp;
      }
  
!     if (newwin == NULL)
  	frp = wp->w_frame;
      else
! 	frp = newwin->w_frame;
      frp->fr_parent = curfrp->fr_parent;
  
      /* Insert the new frame at the right place in the frame list. */
--- 972,981 ----
  		frp->fr_parent = curfrp;
      }
  
!     if (new_wp == NULL)
  	frp = wp->w_frame;
      else
! 	frp = new_wp->w_frame;
      frp->fr_parent = curfrp->fr_parent;
  
      /* Insert the new frame at the right place in the frame list. */
***************
*** 4284,4302 ****
      win_T	*after UNUSED;
      int		hidden UNUSED;
  {
!     win_T	*newwin;
  
      /*
       * allocate window structure and linesizes arrays
       */
!     newwin = (win_T *)alloc_clear((unsigned)sizeof(win_T));
!     if (newwin != NULL && win_alloc_lines(newwin) == FAIL)
      {
! 	vim_free(newwin);
! 	newwin = NULL;
      }
  
!     if (newwin != NULL)
      {
  #ifdef FEAT_AUTOCMD
  	/* Don't execute autocommands while the window is not properly
--- 4284,4302 ----
      win_T	*after UNUSED;
      int		hidden UNUSED;
  {
!     win_T	*new_wp;
  
      /*
       * allocate window structure and linesizes arrays
       */
!     new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T));
!     if (new_wp != NULL && win_alloc_lines(new_wp) == FAIL)
      {
! 	vim_free(new_wp);
! 	new_wp = NULL;
      }
  
!     if (new_wp != NULL)
      {
  #ifdef FEAT_AUTOCMD
  	/* Don't execute autocommands while the window is not properly
***************
*** 4309,4361 ****
  	 */
  #ifdef FEAT_WINDOWS
  	if (!hidden)
! 	    win_append(after, newwin);
  #endif
  #ifdef FEAT_VERTSPLIT
! 	newwin->w_wincol = 0;
! 	newwin->w_width = Columns;
  #endif
  
  	/* position the display and the cursor at the top of the file. */
! 	newwin->w_topline = 1;
  #ifdef FEAT_DIFF
! 	newwin->w_topfill = 0;
  #endif
! 	newwin->w_botline = 2;
! 	newwin->w_cursor.lnum = 1;
  #ifdef FEAT_SCROLLBIND
! 	newwin->w_scbind_pos = 1;
  #endif
  
  	/* We won't calculate w_fraction until resizing the window */
! 	newwin->w_fraction = 0;
! 	newwin->w_prev_fraction_row = -1;
  
  #ifdef FEAT_GUI
  	if (gui.in_use)
  	{
! 	    gui_create_scrollbar(&newwin->w_scrollbars[SBAR_LEFT],
! 		    SBAR_LEFT, newwin);
! 	    gui_create_scrollbar(&newwin->w_scrollbars[SBAR_RIGHT],
! 		    SBAR_RIGHT, newwin);
  	}
  #endif
  #ifdef FEAT_EVAL
  	/* init w: variables */
! 	init_var_dict(&newwin->w_vars, &newwin->w_winvar);
  #endif
  #ifdef FEAT_FOLDING
! 	foldInitWin(newwin);
  #endif
  #ifdef FEAT_AUTOCMD
  	unblock_autocmds();
  #endif
  #ifdef FEAT_SEARCH_EXTRA
! 	newwin->w_match_head = NULL;
! 	newwin->w_next_match_id = 4;
  #endif
      }
!     return newwin;
  }
  
  #if defined(FEAT_WINDOWS) || defined(PROTO)
--- 4309,4361 ----
  	 */
  #ifdef FEAT_WINDOWS
  	if (!hidden)
! 	    win_append(after, new_wp);
  #endif
  #ifdef FEAT_VERTSPLIT
! 	new_wp->w_wincol = 0;
! 	new_wp->w_width = Columns;
  #endif
  
  	/* position the display and the cursor at the top of the file. */
! 	new_wp->w_topline = 1;
  #ifdef FEAT_DIFF
! 	new_wp->w_topfill = 0;
  #endif
! 	new_wp->w_botline = 2;
! 	new_wp->w_cursor.lnum = 1;
  #ifdef FEAT_SCROLLBIND
! 	new_wp->w_scbind_pos = 1;
  #endif
  
  	/* We won't calculate w_fraction until resizing the window */
! 	new_wp->w_fraction = 0;
! 	new_wp->w_prev_fraction_row = -1;
  
  #ifdef FEAT_GUI
  	if (gui.in_use)
  	{
! 	    gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT],
! 		    SBAR_LEFT, new_wp);
! 	    gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT],
! 		    SBAR_RIGHT, new_wp);
  	}
  #endif
  #ifdef FEAT_EVAL
  	/* init w: variables */
! 	init_var_dict(&new_wp->w_vars, &new_wp->w_winvar);
  #endif
  #ifdef FEAT_FOLDING
! 	foldInitWin(new_wp);
  #endif
  #ifdef FEAT_AUTOCMD
  	unblock_autocmds();
  #endif
  #ifdef FEAT_SEARCH_EXTRA
! 	new_wp->w_match_head = NULL;
! 	new_wp->w_next_match_id = 4;
  #endif
      }
!     return new_wp;
  }
  
  #if defined(FEAT_WINDOWS) || defined(PROTO)
*** ../vim-7.3.399/src/version.c	2012-01-10 18:37:53.000000000 +0100
--- src/version.c	2012-01-10 22:23:10.000000000 +0100
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     400,
  /**/

-- 
A parent can be arrested if his child cannot hold back a burp during a church
service.
		[real standing law in Nebraska, United States of America]

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