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

Reply via email to