tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bug in readline.c



Hi,

First,  if this is not the right place to send the patch, please let me know, thanks.

There is a bug in readline.c,  here is reproduce steps and patch to fix it,  @christos, please help to review it, thanks.

Reproduce steps:

1. Download libedit from https://www.thrysoee.dk/editline/

2. config and build libedit, and then run fileman under examples folder

3.  history command  not work, no history is outputted.

    FileMan: help
cd        Change to directory DIR.
delete        Delete FILE.
help        Display this text.
?        Synonym for `help'.
list        List files in DIR.
ls        Synonym for `list'.
pwd        Print the current working directory.
quit        Quit using Fileman.
rename        Rename FILE to NEWNAME.
stat        Print out statistics on FILE.
view        View the contents of FILE.
history        List editline history.
FileMan: history
FileMan:

Expect result:

FileMan: help
cd        Change to directory DIR.
delete        Delete FILE.
help        Display this text.
?        Synonym for `help'.
list        List files in DIR.
ls        Synonym for `list'.
pwd        Print the current working directory.
quit        Quit using Fileman.
rename        Rename FILE to NEWNAME.
stat        Print out statistics on FILE.
view        View the contents of FILE.
history        List editline history.
FileMan: history
help
history
FileMan:

4. libedit use readline.c v1.151


Patch:

--- readline.c    2019-08-20 17:05:28.338507034 +0800
+++ readline.c.orig    2019-08-20 17:04:19.724864404 +0800
@@ -1476,11 +1476,7 @@
     if (ev.num == history_length)
         history_base++;
     else
-    {
-            history_offset++;
-             history_length = ev.num;
-        }
-
+        history_length = ev.num;
     return 0;
 }

if history_offset not increate when add history, it will make current history event

not align with offset,  and cannot get history correctly. and problem caused by this

commit:

http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libedit/readline.c.diff?r1=1.136&r2=1.137&only_with_tag=MAIN&f=h

--
BRs

Sandy(Li Changqing)



Home | Main Index | Thread Index | Old Index