lineedit: histfile can get emptied when CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y
When CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is set to y, the histfile will get cleared if the total amount of history lines is less than MAX_HISTORY. Only if the histfile is not empty _and_ the amount of lines currently in memory are equal to or greater than MAX_HISTORY, history saving will work as expected with this feature enabled. Output from defconfig + CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y: $ echo "foo" > ~/.ash_history $ ./busybox ash ~/busybox/a $ echo "bar" > /dev/null ~/busybox/a $ exit $ cat ~/.ash_history $ Output with the patch applied and same config as above: $ echo "foo" > ~/.ash_history $ ./busybox ash ~/busybox/b $ echo "bar" > /dev/null ~/busybox/b $ exit $ cat ~/.ash_history foo echo "bar" > /dev/null exit $ Signed-off-by: Dennis Groenen <tj.groenen at gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
9d75370238
commit
deee356a62
@ -1352,8 +1352,7 @@ static void load_history(line_input_t *st_parm)
|
||||
/* fill temp_h[], retaining only last MAX_HISTORY lines */
|
||||
memset(temp_h, 0, sizeof(temp_h));
|
||||
idx = 0;
|
||||
if (!ENABLE_FEATURE_EDITING_SAVE_ON_EXIT)
|
||||
st_parm->cnt_history_in_file = 0;
|
||||
st_parm->cnt_history_in_file = 0;
|
||||
while ((line = xmalloc_fgetline(fp)) != NULL) {
|
||||
if (line[0] == '\0') {
|
||||
free(line);
|
||||
@ -1361,8 +1360,7 @@ static void load_history(line_input_t *st_parm)
|
||||
}
|
||||
free(temp_h[idx]);
|
||||
temp_h[idx] = line;
|
||||
if (!ENABLE_FEATURE_EDITING_SAVE_ON_EXIT)
|
||||
st_parm->cnt_history_in_file++;
|
||||
st_parm->cnt_history_in_file++;
|
||||
idx++;
|
||||
if (idx == st_parm->max_history)
|
||||
idx = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user