diff options
Diffstat (limited to 'Src/builtin.c')
-rw-r--r-- | Src/builtin.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/Src/builtin.c b/Src/builtin.c index 2165b1864..564edfb46 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -1308,18 +1308,23 @@ bin_fc(char *nam, char **argv, char *ops, int func) return 1; } /* default values of first and last, and range checking */ + if (last == -1) { + if (ops['l'] && first < curhist) { + last = addhistnum(curline.histnum,-1,0); + if (last < firsthist()) + last = firsthist(); + } + else + last = first; + } if (first == -1) { first = ops['l']? addhistnum(curline.histnum,-16,0) - : addhistnum(curline.histnum,-1,0); - } - if (last == -1) - last = ops['l']? addhistnum(curline.histnum,-1,0) : first; - if (first < firsthist()) - first = firsthist() - (last < firsthist()); - if (last > curhist) - last = curhist; - else if (last < first) - last = first; + : addhistnum(curline.histnum,-1,0); + if (first < 1) + first = 1; + if (last < first) + last = first; + } if (ops['l']) { /* list the required part of the history */ retval = fclist(stdout, !ops['n'], ops['r'], ops['D'], |