Hi Chet, Do you have any feedback on my suggestions? Thanks.
Best, John Lin 林自均 <[email protected]> 於 2019年2月3日 週日 上午9:32寫道: > Hi Chet, > > Thanks for the response. However, I have another opinion. I suggest the > fix should be in "_rl_revert_all_lines()". The reasons are: > > 1. "_rl_revert_all_lines()" is a private function and only called once in > "readline_internal_teardown()", so modifying it has no other side effects. > 2. Since the function name "_rl_revert_all_lines()" says it's going to > revert *all* lines, I think it's the comment that is incorrect and should > be modified. > > If you are still going with your patch, I suggest that the function name > "_rl_revert_all_lines()" should be renamed. For example > "_rl_revert_all_lines_before_current_history" or something like that. > > Thank you. > > Best, > John Lin > > Chet Ramey <[email protected]> 於 2019年2月3日 週日 上午4:36寫道: > >> On 2/1/19 8:57 PM, 林自均 wrote: >> > Hi Chet, >> > >> > For Frederick's problem, I suppose that is a bug. Here is my proposed >> patch >> > (against bash code base): >> > >> > diff --git a/lib/readline/misc.c b/lib/readline/misc.c >> > index 64b1457d..6aed8e64 100644 >> > --- a/lib/readline/misc.c >> > +++ b/lib/readline/misc.c >> > @@ -446,7 +446,8 @@ _rl_revert_all_lines (void) >> > saved_undo_list = rl_undo_list; >> > hpos = where_history (); >> > >> > - entry = (hpos == history_length) ? previous_history () : >> > current_history (); >> > + history_set_pos (history_length); >> > + entry = previous_history (); >> > while (entry) >> > { >> > if (ul = (UNDO_LIST *)entry->data) >> > >> > The root cause was that the variable "entry" should have pointed to the >> > latest history entry, but it pointed to the current history instead. If >> I >> > am missing anything, please let me know. Thanks. >> >> This is the correct diagnosis, but I am not sure this is the right place >> to fix it. The function does exactly what the comment says it should: >> revert all lines before the current history entry. If the caller wants it >> to act on every history line, it should ensure that the history position >> is at the end before calling it (history_offset == history_length). I'll >> make the fix in readline_internal_teardown() (patch attached). >> >> Thanks for looking at it. >> >> Chet >> -- >> ``The lyf so short, the craft so long to lerne.'' - Chaucer >> ``Ars longa, vita brevis'' - Hippocrates >> Chet Ramey, UTech, CWRU [email protected] http://tiswww.cwru.edu/~chet/ >> >
_______________________________________________ Bug-readline mailing list [email protected] https://lists.gnu.org/mailman/listinfo/bug-readline
