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:
M | src/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 */