Blob Blame History Raw
To: vim-dev@vim.org
Subject: Patch 7.1.247
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.1.247
Problem:    When using Netbeans backspacing in Insert mode skips a character
	    now and then. (Ankit Jain)
Solution:   Avoid calling netbeans_removed(), it frees the line pointer.
	    (partly by Dominique Pelle).
Files:	    src/misc1.c


*** ../vim-7.1.246/src/misc1.c	Sat Jan 19 15:55:51 2008
--- src/misc1.c	Wed Feb 13 10:56:16 2008
***************
*** 2270,2282 ****
      /*
       * If the old line has been allocated the deletion can be done in the
       * existing line. Otherwise a new line has to be allocated
       */
-     was_alloced = ml_line_alloced();	    /* check if oldp was allocated */
  #ifdef FEAT_NETBEANS_INTG
!     if (was_alloced && usingNetbeans)
! 	netbeans_removed(curbuf, lnum, col, count);
!     /* else is handled by ml_replace() */
  #endif
      if (was_alloced)
  	newp = oldp;			    /* use same allocated memory */
      else
--- 2270,2285 ----
      /*
       * If the old line has been allocated the deletion can be done in the
       * existing line. Otherwise a new line has to be allocated
+      * Can't do this when using Netbeans, because we would need to invoke
+      * netbeans_removed(), which deallocates the line.  Let ml_replace() take
+      * care of notifiying Netbeans.
       */
  #ifdef FEAT_NETBEANS_INTG
!     if (usingNetbeans)
! 	was_alloced = FALSE;
!     else
  #endif
+ 	was_alloced = ml_line_alloced();    /* check if oldp was allocated */
      if (was_alloced)
  	newp = oldp;			    /* use same allocated memory */
      else
***************
*** 3978,3984 ****
  	    /* remove trailing path separator */
  #ifndef MACOS_CLASSIC
  	    /* With MacOS path (with  colons) the final colon is required */
! 	    /* to avoid confusion between absoulute and relative path */
  	    if (pend > p && after_pathsep(p, pend))
  		--pend;
  #endif
--- 3981,3987 ----
  	    /* remove trailing path separator */
  #ifndef MACOS_CLASSIC
  	    /* With MacOS path (with  colons) the final colon is required */
! 	    /* to avoid confusion between absolute and relative path */
  	    if (pend > p && after_pathsep(p, pend))
  		--pend;
  #endif
***************
*** 5689,5695 ****
  	    else if (lookfor_ctor_init || class_or_struct)
  	    {
  		/* we have something found, that looks like the start of
! 		 * cpp-base-class-declaration or contructor-initialization */
  		cpp_base_class = TRUE;
  		lookfor_ctor_init = class_or_struct = FALSE;
  		*col = 0;
--- 5692,5698 ----
  	    else if (lookfor_ctor_init || class_or_struct)
  	    {
  		/* we have something found, that looks like the start of
! 		 * cpp-base-class-declaration or constructor-initialization */
  		cpp_base_class = TRUE;
  		lookfor_ctor_init = class_or_struct = FALSE;
  		*col = 0;
***************
*** 6146,6152 ****
      pos_T	our_paren_pos;
      char_u	*start;
      int		start_brace;
! #define BRACE_IN_COL0		1	    /* '{' is in comumn 0 */
  #define BRACE_AT_START		2	    /* '{' is at start of line */
  #define BRACE_AT_END		3	    /* '{' is at end of line */
      linenr_T	ourscope;
--- 6149,6155 ----
      pos_T	our_paren_pos;
      char_u	*start;
      int		start_brace;
! #define BRACE_IN_COL0		1	    /* '{' is in column 0 */
  #define BRACE_AT_START		2	    /* '{' is at start of line */
  #define BRACE_AT_END		3	    /* '{' is at end of line */
      linenr_T	ourscope;
***************
*** 6369,6375 ****
  		    if (curwin->w_cursor.lnum > 1)
  		    {
  			/* If the start comment string matches in the previous
! 			 * line, use the indent of that line pluss offset.  If
  			 * the middle comment string matches in the previous
  			 * line, use the indent of that line.  XXX */
  			look = skipwhite(ml_get(curwin->w_cursor.lnum - 1));
--- 6372,6378 ----
  		    if (curwin->w_cursor.lnum > 1)
  		    {
  			/* If the start comment string matches in the previous
! 			 * line, use the indent of that line plus offset.  If
  			 * the middle comment string matches in the previous
  			 * line, use the indent of that line.  XXX */
  			look = skipwhite(ml_get(curwin->w_cursor.lnum - 1));
***************
*** 8222,8228 ****
  
  		    if (*that && *that != ';') /* not a comment line */
  		    {
! 			/* test *that != '(' to accomodate first let/do
  			 * argument if it is more than one line */
  			if (!vi_lisp && *that != '(' && *that != '[')
  			    firsttry++;
--- 8225,8231 ----
  
  		    if (*that && *that != ';') /* not a comment line */
  		    {
! 			/* test *that != '(' to accommodate first let/do
  			 * argument if it is more than one line */
  			if (!vi_lisp && *that != '(' && *that != '[')
  			    firsttry++;
*** ../vim-7.1.246/src/version.c	Wed Feb 13 10:27:28 2008
--- src/version.c	Wed Feb 13 10:56:42 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     247,
  /**/

-- 
Far back in the mists of ancient time, in the great and glorious days of the
former Galactic Empire, life was wild, rich and largely tax free.
Mighty starships plied their way between exotic suns, seeking adventure and
reward among the furthest reaches of Galactic space.  In those days, spirits
were brave, the stakes were high, men were real men, women were real women
and small furry creatures from Alpha Centauri were real small furry creatures
from Alpha Centauri.  And all dared to brave unknown terrors, to do mighty
deeds, to boldly split infinitives that no man had split before -- and thus
was the Empire forged.
		-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"

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