Patch 7.2.157
Problem:    Illegal memory access when searching in path.
Solution:   Avoid looking at a byte after end of a string. (Dominique Pelle)
Files:      src/search.c


*** ../vim-7.2.156/src/search.c Fri Jul 18 12:05:58 2008
--- src/search.c        Wed Apr 22 12:26:19 2009
***************
*** 2327,2334 ****
                    for (col = pos.col; check_prevcol(linep, col, '\\', &col);)
                        bslcnt++;
                }
!               /* Only accept a match when 'M' is in 'cpo' or when ecaping is
!                * what we expect. */
                if (cpo_bsl || (bslcnt & 1) == match_escaped)
                {
                    if (c == initc)
--- 2336,2343 ----
                    for (col = pos.col; check_prevcol(linep, col, '\\', &col);)
                        bslcnt++;
                }
!               /* Only accept a match when 'M' is in 'cpo' or when escaping
!                * is what we expect. */
                if (cpo_bsl || (bslcnt & 1) == match_escaped)
                {
                    if (c == initc)
***************
*** 4663,4669 ****
                            msg_putchar('\n');      /* cursor below last one */
                            if (!got_int)           /* don't display if 'q'
                                                       typed at "--more--"
!                                                      mesage */
                            {
                                msg_home_replace_hl(new_fname);
                                MSG_PUTS(_(" (includes previously listed 
match)"));
--- 4672,4678 ----
                            msg_putchar('\n');      /* cursor below last one */
                            if (!got_int)           /* don't display if 'q'
                                                       typed at "--more--"
!                                                      message */
                            {
                                msg_home_replace_hl(new_fname);
                                MSG_PUTS(_(" (includes previously listed 
match)"));
***************
*** 4975,4981 ****
                                            || IObuff[i-2] == '!'))))
                                IObuff[i++] = ' ';
                        }
!                       /* copy as much as posible of the new word */
                        if (p - aux >= IOSIZE - i)
                            p = aux + IOSIZE - i - 1;
                        STRNCPY(IObuff + i, aux, p - aux);
--- 4984,4990 ----
                                            || IObuff[i-2] == '!'))))
                                IObuff[i++] = ' ';
                        }
!                       /* copy as much as possible of the new word */
                        if (p - aux >= IOSIZE - i)
                            p = aux + IOSIZE - i - 1;
                        STRNCPY(IObuff + i, aux, p - aux);
***************
*** 5010,5016 ****
                    if (did_show)
                        msg_putchar('\n');      /* cursor below last one */
                    if (!got_int)               /* don't display if 'q' typed
!                                                   at "--more--" mesage */
                        msg_home_replace_hl(curr_fname);
                    prev_fname = curr_fname;
                }
--- 5019,5025 ----
                    if (did_show)
                        msg_putchar('\n');      /* cursor below last one */
                    if (!got_int)               /* don't display if 'q' typed
!                                                   at "--more--" message */
                        msg_home_replace_hl(curr_fname);
                    prev_fname = curr_fname;
                }
***************
*** 5092,5098 ****
                }
                if (action != ACTION_SHOW)
                {
!                   curwin->w_cursor.col = (colnr_T) (startp - line);
                    curwin->w_set_curswant = TRUE;
                }
  
--- 5101,5107 ----
                }
                if (action != ACTION_SHOW)
                {
!                   curwin->w_cursor.col = (colnr_T)(startp - line);
                    curwin->w_set_curswant = TRUE;
                }
  
***************
*** 5119,5125 ****
                    && action == ACTION_EXPAND
                    && !(compl_cont_status & CONT_SOL)
  #endif
!                   && *(p = startp + 1))
                goto search_line;
        }
        line_breakcheck();
--- 5128,5135 ----
                    && action == ACTION_EXPAND
                    && !(compl_cont_status & CONT_SOL)
  #endif
!                   && *startp != NUL
!                   && *(p = startp + 1) != NUL)
                goto search_line;
        }
        line_breakcheck();
*** ../vim-7.2.156/src/version.c        Wed Apr 22 16:22:44 2009
--- src/version.c       Wed Apr 22 16:39:59 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     157,
  /**/


-- 
ARTHUR:  Bloody peasant!
DENNIS:  Oh, what a give away.  Did you hear that, did you hear that, eh?
         That's what I'm on about -- did you see him repressing me, you saw it
         didn't you?
                                  The Quest for the Holy Grail (Monty Python)

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