Dominique Pelle wrote:

> > How about this change instead:
> >
> > *** ../vim-7.1.094/src/message.c        Tue Aug  7 21:59:26 2007
> > --- src/message.c       Thu Aug 30 21:05:17 2007
> > ***************
> > *** 1941,1946 ****
> > --- 1942,1951 ----
> >                 if (quit_more)
> >                     return;
> >             }
> > +
> > +           /* Quit when at the end of the text, avoid reading past it. */
> > +           if (maxlen >= 0 && (int)(s - str) >= maxlen)
> > +               break;
> >
> 
> 
> Indeed, I overlooked the fact that maxlen could be negative.
> 
> Shouldn't the test be:
> 
>    /* Quit when at the end of the text, avoid reading past it. */
>    if ((maxlen >= 0 && (int)(s - str) >= maxlen) || *s == NUL)
>        break;
> 
> Which is the negation of the test in the while loop at line 1845.

OK.

Hmm, perhaps the best way is to keep a flag that we changed the "s"
pointer, and then do "continue".  I think that is what was originally
intended.  It's also simpler and more straightforward.  Can you check
that the valgrind error doesn't happen then?


*** ../vim-7.1.094/src/message.c        Tue Aug  7 21:59:26 2007
--- src/message.c       Thu Aug 30 22:53:03 2007
***************
*** 1840,1845 ****
--- 1841,1847 ----
      char_u    *sb_str = str;
      int               sb_col = msg_col;
      int               wrap;
+     int               did_last_char;
  
      did_wait_return = FALSE;
      while ((maxlen < 0 || (int)(s - str) < maxlen) && *s != NUL)
***************
*** 1909,1915 ****
--- 1911,1920 ----
                else
  #endif
                    msg_screen_putchar(*s++, attr);
+               did_last_char = TRUE;
            }
+           else
+               did_last_char = FALSE;
  
            if (p_more)
                /* store text for scrolling back */
***************
*** 1944,1954 ****
  
            /* When we displayed a char in last column need to check if there
             * is still more. */
!           if (*s >= ' '
! #ifdef FEAT_RIGHTLEFT
!                   && !cmdmsg_rl
! #endif
!              )
                continue;
        }
  
--- 1949,1955 ----
  
            /* When we displayed a char in last column need to check if there
             * is still more. */
!           if (did_last_char)
                continue;
        }
  


-- 
ARTHUR: Right! Knights! Forward!
   ARTHUR leads a charge toward the castle.  Various shots of them battling on,
   despite being hit by a variety of farm animals.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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