From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6165 invoked by alias); 18 Aug 2002 00:02:08 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 6158 invoked from network); 18 Aug 2002 00:02:07 -0000 Received: from unknown (HELO localhost.redhat.com) (66.30.197.194) by sources.redhat.com with SMTP; 18 Aug 2002 00:02:07 -0000 Received: by localhost.redhat.com (Postfix, from userid 469) id AB60D10CC3; Sat, 17 Aug 2002 20:00:12 -0400 (EDT) From: Elena Zannoni MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15710.58251.750626.979632@localhost.redhat.com> Date: Sat, 17 Aug 2002 17:02:00 -0000 To: Mark Kettenis Cc: ezannoni@redhat.com, gdb-patches@sources.redhat.com Subject: Re: [PATCH/RFA] Fix operate-and-get-next when history list is full In-Reply-To: <200208171003.g7HA3E40042404@elgar.kettenis.dyndns.org> References: <200208171003.g7HA3E40042404@elgar.kettenis.dyndns.org> X-SW-Source: 2002-08/txt/msg00490.txt.bz2 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 > > * 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); > } >