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

Reply via email to