bc: do not allocate line editing state until needed

function                                             old     new   delta
xc_read_line                                         324     353     +29
free_line_input_t                                     34      39      +5
xc_vm_init                                           656     640     -16
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 34/-16)             Total: 18 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2020-12-21 21:36:58 +01:00
parent e4202df091
commit 00eb23b47a
5 changed files with 35 additions and 30 deletions

View File

@ -1417,15 +1417,19 @@ void FAST_FUNC show_history(const line_input_t *st)
printf("%4d %s\n", i, st->history[i]);
}
# if ENABLE_FEATURE_EDITING_SAVEHISTORY
void FAST_FUNC free_line_input_t(line_input_t *n)
{
# if ENABLE_FEATURE_EDITING_SAVEHISTORY
int i = n->cnt_history;
while (i > 0)
free(n->history[--i]);
#endif
free(n);
if (n) {
int i = n->cnt_history;
while (i > 0)
free(n->history[--i]);
free(n);
}
}
# else
/* #defined to free() in libbb.h */
# endif
# if ENABLE_FEATURE_EDITING_SAVEHISTORY
/* We try to ensure that concurrent additions to the history
@ -1506,7 +1510,7 @@ void save_history(line_input_t *st)
{
FILE *fp;
if (!st->hist_file)
if (!st || !st->hist_file)
return;
if (st->cnt_history <= st->cnt_history_in_file)
return;