This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH/RFA] Fix operate-and-get-next when history list is full


Mark Kettenis writes:
 > Hi Elena,
 > 
 > The attached patch fixes a problem with operate-and-get-next when the
 > history list is full.  In that case, when executing a command, the
 > oldest entry is removed from the history, all other entries are moved
 > "up", and a new entry is put at the end of the list.  In that case we
 > shouldn't increase the current line by one the find the next line.
 > bash contains similar code as my patch adds.
 > 
 > OK to apply?
 > 

Sure.

Elena


 > Mark
 > 
 > 
 > Index: ChangeLog
 > from  Mark Kettenis  <kettenis@gnu.org>
 > 
 > 	* top.c (gdb_rl_operate_and_get_next): Make sure
 > 	operate-and-get-next functions correctly even when the history
 > 	list is completely filled.
 > 
 > Index: top.c
 > ===================================================================
 > RCS file: /cvs/src/src/gdb/top.c,v
 > retrieving revision 1.65
 > diff -u -p -r1.65 top.c
 > --- top.c 24 Jul 2002 17:58:46 -0000 1.65
 > +++ top.c 17 Aug 2002 09:58:17 -0000
 > @@ -1082,6 +1082,8 @@ gdb_rl_operate_and_get_next_completion (
 >  static int
 >  gdb_rl_operate_and_get_next (int count, int key)
 >  {
 > +  int where;
 > +
 >    if (event_loop_p)
 >      {
 >        /* Use the async hook.  */
 > @@ -1094,8 +1096,20 @@ gdb_rl_operate_and_get_next (int count, 
 >        rl_pre_input_hook = (Function *) gdb_rl_operate_and_get_next_completion;
 >      }
 >  
 > -  /* Add 1 because we eventually want the next line.  */
 > -  operate_saved_history = where_history () + 1;
 > +  /* Find the current line, and find the next line to use.  */
 > +  where = where_history();
 > +
 > +  /* FIXME: kettenis/20020817: max_input_history is renamed into
 > +     history_max_entries in readline-4.2.  When we do a new readline
 > +     import, we should probably change it here too, even though
 > +     readline maintains backwards compatibility for now by still
 > +     defining max_input_history.  */
 > +  if ((history_is_stifled () && (history_length >= max_input_history)) ||
 > +      (where >= history_length - 1))
 > +    operate_saved_history = where;
 > +  else
 > +    operate_saved_history = where + 1;
 > +
 >    return rl_newline (1, key);
 >  }
 >  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]