nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit 30abc0227716ea2fd984dcd99b2958fc23dcee35
parent 9a9714fe0c24f8d3b7c4ee9f88915d8f6a0ca800
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Sun, 10 Oct 2021 11:47:12 +0200

tweaks: reshuffle two conditions, re-indent, and rewrap a line

If all is programmed well, then the functions 'get_older_item' and
'get_newer_item' will only occur when a history list is passed to
acquire_an_answer().  But let's keep it certain we don't dereference
a NULL pointer.

Diffstat:
Msrc/prompt.c | 55+++++++++++++++++++++++++------------------------------
1 file changed, 25 insertions(+), 30 deletions(-)

diff --git a/src/prompt.c b/src/prompt.c @@ -501,38 +501,33 @@ functionptrtype acquire_an_answer(int *actual, bool *listed, } else #endif /* ENABLE_TABCOMP */ #ifdef ENABLE_HISTORIES - if (func == get_older_item) { - if (history_list != NULL) { - /* If this is the first step into history, start at the bottom. */ - if (stored_string == NULL) - reset_history_pointer_for(*history_list); - - /* When moving up from the bottom, remember the current answer. */ - if ((*history_list)->next == NULL) - stored_string = mallocstrcpy(stored_string, answer); - - /* If there is an older item, move to it and copy its string. */ - if ((*history_list)->prev != NULL) { - *history_list = (*history_list)->prev; - answer = mallocstrcpy(answer, (*history_list)->data); - typing_x = strlen(answer); - } + if (func == get_older_item && history_list != NULL) { + /* If this is the first step into history, start at the bottom. */ + if (stored_string == NULL) + reset_history_pointer_for(*history_list); + + /* When moving up from the bottom, remember the current answer. */ + if ((*history_list)->next == NULL) + stored_string = mallocstrcpy(stored_string, answer); + + /* If there is an older item, move to it and copy its string. */ + if ((*history_list)->prev != NULL) { + *history_list = (*history_list)->prev; + answer = mallocstrcpy(answer, (*history_list)->data); + typing_x = strlen(answer); + } + } else if (func == get_newer_item && history_list != NULL) { + /* If there is a newer item, move to it and copy its string. */ + if ((*history_list)->next != NULL) { + *history_list = (*history_list)->next; + answer = mallocstrcpy(answer, (*history_list)->data); + typing_x = strlen(answer); } - } else if (func == get_newer_item) { - if (history_list != NULL) { - /* If there is a newer item, move to it and copy its string. */ - if ((*history_list)->next != NULL) { - *history_list = (*history_list)->next; - answer = mallocstrcpy(answer, (*history_list)->data); - typing_x = strlen(answer); - } - /* When at the bottom of the history list, restore the old answer. */ - if ((*history_list)->next == NULL && - *answer == '\0' && stored_string != NULL) { - answer = mallocstrcpy(answer, stored_string); - typing_x = strlen(answer); - } + /* When at the bottom of the history list, restore the old answer. */ + if ((*history_list)->next == NULL && stored_string && *answer == '\0') { + answer = mallocstrcpy(answer, stored_string); + typing_x = strlen(answer); } } else #endif /* ENABLE_HISTORIES */