aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-12-21 21:36:58 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2020-12-21 21:36:58 +0100
commit00eb23b47aa79461b913b320eba3c95b90e6eec4 (patch)
treeebeb54dcc6eb977247f5088be9cffc4deaea27e9 /libbb
parente4202df0918e13130bb511a4ce372cbbe089068d (diff)
downloadbusybox-w32-00eb23b47aa79461b913b320eba3c95b90e6eec4.tar.gz
busybox-w32-00eb23b47aa79461b913b320eba3c95b90e6eec4.tar.bz2
busybox-w32-00eb23b47aa79461b913b320eba3c95b90e6eec4.zip
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>
Diffstat (limited to 'libbb')
-rw-r--r--libbb/lineedit.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index c3b5738e2..b3e7abac5 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -1417,15 +1417,19 @@ void FAST_FUNC show_history(const line_input_t *st)
1417 printf("%4d %s\n", i, st->history[i]); 1417 printf("%4d %s\n", i, st->history[i]);
1418} 1418}
1419 1419
1420# if ENABLE_FEATURE_EDITING_SAVEHISTORY
1420void FAST_FUNC free_line_input_t(line_input_t *n) 1421void FAST_FUNC free_line_input_t(line_input_t *n)
1421{ 1422{
1422# if ENABLE_FEATURE_EDITING_SAVEHISTORY 1423 if (n) {
1423 int i = n->cnt_history; 1424 int i = n->cnt_history;
1424 while (i > 0) 1425 while (i > 0)
1425 free(n->history[--i]); 1426 free(n->history[--i]);
1426#endif 1427 free(n);
1427 free(n); 1428 }
1428} 1429}
1430# else
1431/* #defined to free() in libbb.h */
1432# endif
1429 1433
1430# if ENABLE_FEATURE_EDITING_SAVEHISTORY 1434# if ENABLE_FEATURE_EDITING_SAVEHISTORY
1431/* We try to ensure that concurrent additions to the history 1435/* We try to ensure that concurrent additions to the history
@@ -1506,7 +1510,7 @@ void save_history(line_input_t *st)
1506{ 1510{
1507 FILE *fp; 1511 FILE *fp;
1508 1512
1509 if (!st->hist_file) 1513 if (!st || !st->hist_file)
1510 return; 1514 return;
1511 if (st->cnt_history <= st->cnt_history_in_file) 1515 if (st->cnt_history <= st->cnt_history_in_file)
1512 return; 1516 return;