Patch 7.1.264
Problem:    Crash when indenting lines. (Dominique Pelle)
Solution:   Set the cursor column when changing the cursor line.
Files:      src/ops.c, src/misc1.c


*** ../vim-7.1.263/src/ops.c    Wed Feb  6 14:43:50 2008
--- src/ops.c   Sun Feb 24 14:56:38 2008
***************
*** 692,697 ****
--- 692,698 ----
            }
        }
        ++curwin->w_cursor.lnum;
+       curwin->w_cursor.col = 0;  /* make sure it's valid */
      }
  
      /* put cursor on first non-blank of indented line */
*** ../vim-7.1.263/src/misc1.c  Wed Feb 13 10:57:11 2008
--- src/misc1.c Sun Feb 24 15:04:27 2008
***************
*** 6894,6899 ****
--- 6894,6900 ----
                        if (trypos != NULL)
                        {
                            curwin->w_cursor.lnum = trypos->lnum + 1;
+                           curwin->w_cursor.col = 0;
                            continue;
                        }
  
***************
*** 6954,6959 ****
--- 6955,6961 ----
                            if (trypos != NULL)
                            {
                                curwin->w_cursor.lnum = trypos->lnum + 1;
+                               curwin->w_cursor.col = 0;
                                continue;
                            }
                        }
***************
*** 6991,6996 ****
--- 6993,6999 ----
                if ((trypos = find_start_comment(ind_maxcomment)) != NULL)
                {
                    curwin->w_cursor.lnum = trypos->lnum + 1;
+                   curwin->w_cursor.col = 0;
                    continue;
                }
  
***************
*** 7114,7120 ****
--- 7117,7126 ----
                {
                    if (find_last_paren(l, '{', '}') && (trypos =
                                    find_start_brace(ind_maxcomment)) != NULL)
+                   {
                        curwin->w_cursor.lnum = trypos->lnum + 1;
+                       curwin->w_cursor.col = 0;
+                   }
                    continue;
                }
  
***************
*** 7230,7240 ****
                         *     case xx:  if ( asdf &&
                         *                      asdf)
                         */
!                       curwin->w_cursor.lnum = trypos->lnum;
                        l = ml_get_curline();
                        if (cin_iscase(l) || cin_isscopedecl(l))
                        {
                            ++curwin->w_cursor.lnum;
                            continue;
                        }
                    }
--- 7236,7247 ----
                         *     case xx:  if ( asdf &&
                         *                      asdf)
                         */
!                       curwin->w_cursor = *trypos;
                        l = ml_get_curline();
                        if (cin_iscase(l) || cin_isscopedecl(l))
                        {
                            ++curwin->w_cursor.lnum;
+                           curwin->w_cursor.col = 0;
                            continue;
                        }
                    }
***************
*** 7254,7259 ****
--- 7261,7267 ----
                            if (*l == NUL || l[STRLEN(l) - 1] != '\\')
                                break;
                            --curwin->w_cursor.lnum;
+                           curwin->w_cursor.col = 0;
                        }
                    }
  
***************
*** 7587,7597 ****
                             *     case xx:  if ( asdf &&
                             *                      asdf)
                             */
!                           curwin->w_cursor.lnum = trypos->lnum;
                            l = ml_get_curline();
                            if (cin_iscase(l) || cin_isscopedecl(l))
                            {
                                ++curwin->w_cursor.lnum;
                                continue;
                            }
                        }
--- 7595,7606 ----
                             *     case xx:  if ( asdf &&
                             *                      asdf)
                             */
!                           curwin->w_cursor = *trypos;
                            l = ml_get_curline();
                            if (cin_iscase(l) || cin_isscopedecl(l))
                            {
                                ++curwin->w_cursor.lnum;
+                               curwin->w_cursor.col = 0;
                                continue;
                            }
                        }
***************
*** 7652,7664 ****
                                && (trypos = find_start_brace(ind_maxcomment))
                                                            != NULL) /* XXX */
                        {
!                           curwin->w_cursor.lnum = trypos->lnum;
                            /* if not "else {" check for terminated again */
                            /* but skip block for "} else {" */
                            l = cin_skipcomment(ml_get_curline());
                            if (*l == '}' || !cin_iselse(l))
                                goto term_again;
                            ++curwin->w_cursor.lnum;
                        }
                    }
                }
--- 7661,7674 ----
                                && (trypos = find_start_brace(ind_maxcomment))
                                                            != NULL) /* XXX */
                        {
!                           curwin->w_cursor = *trypos;
                            /* if not "else {" check for terminated again */
                            /* but skip block for "} else {" */
                            l = cin_skipcomment(ml_get_curline());
                            if (*l == '}' || !cin_iselse(l))
                                goto term_again;
                            ++curwin->w_cursor.lnum;
+                           curwin->w_cursor.col = 0;
                        }
                    }
                }
***************
*** 7727,7732 ****
--- 7737,7743 ----
                if ((trypos = find_start_comment(ind_maxcomment)) != NULL)
                {
                    curwin->w_cursor.lnum = trypos->lnum + 1;
+                   curwin->w_cursor.col = 0;
                    continue;
                }
  
***************
*** 7777,7783 ****
                    if (find_last_paren(l, '(', ')')
                            && (trypos = find_match_paren(ind_maxparen,
                                                     ind_maxcomment)) != NULL)
!                       curwin->w_cursor.lnum = trypos->lnum;
  
                    /* For a line ending in ',' that is a continuation line go
                     * back to the first line with a backslash:
--- 7788,7794 ----
                    if (find_last_paren(l, '(', ')')
                            && (trypos = find_match_paren(ind_maxparen,
                                                     ind_maxcomment)) != NULL)
!                       curwin->w_cursor = *trypos;
  
                    /* For a line ending in ',' that is a continuation line go
                     * back to the first line with a backslash:
***************
*** 7791,7796 ****
--- 7802,7808 ----
                        if (*l == NUL || l[STRLEN(l) - 1] != '\\')
                            break;
                        --curwin->w_cursor.lnum;
+                       curwin->w_cursor.col = 0;
                    }
  
                    amount = get_indent();          /* XXX */
***************
*** 7864,7870 ****
  
                if ((trypos = find_match_paren(ind_maxparen,
                                                     ind_maxcomment)) != NULL)
!                   curwin->w_cursor.lnum = trypos->lnum;
                amount = get_indent();      /* XXX */
                break;
            }
--- 7876,7882 ----
  
                if ((trypos = find_match_paren(ind_maxparen,
                                                     ind_maxcomment)) != NULL)
!                   curwin->w_cursor = *trypos;
                amount = get_indent();      /* XXX */
                break;
            }
*** ../vim-7.1.263/src/version.c        Mon Feb 25 20:45:46 2008
--- src/version.c       Mon Feb 25 21:51:20 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     264,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
49. You never have to deal with busy signals when calling your ISP...because
    you never log off.

 /// Bram Moolenaar -- [EMAIL PROTECTED] -- 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    ///

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui