From 91a4400fd5a74c6e954b22b276dd38c7ffaeae33 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 19 Jul 2000 17:37:57 +0000 Subject: [PATCH] Avoid trying to free NULL ptrs. Comment on malloc usages. -Erik --- cmdedit.c | 10 ++++++---- shell/cmdedit.c | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cmdedit.c b/cmdedit.c index 0f064b414..0de18e81f 100644 --- a/cmdedit.c +++ b/cmdedit.c @@ -370,14 +370,16 @@ void input_tab(char* command, char* prompt, int outputFd, int *cursor, int *len) void get_previous_history(struct history **hp, char* command) { - free((*hp)->s); + if ((*hp)->s) + free((*hp)->s); (*hp)->s = strdup(command); *hp = (*hp)->p; } void get_next_history(struct history **hp, char* command) { - free((*hp)->s); + if ((*hp)->s) + free((*hp)->s); (*hp)->s = strdup(command); *hp = (*hp)->n; } @@ -654,7 +656,7 @@ extern void cmdedit_read_input(char* prompt, char command[BUFSIZ]) struct history *h = his_end; if (!h) { - /* No previous history */ + /* No previous history -- this memory is never freed */ h = his_front = malloc(sizeof(struct history)); h->n = malloc(sizeof(struct history)); @@ -666,7 +668,7 @@ extern void cmdedit_read_input(char* prompt, char command[BUFSIZ]) his_end = h->n; history_counter++; } else { - /* Add a new history command */ + /* Add a new history command -- this memory is never freed */ h->n = malloc(sizeof(struct history)); h->n->p = h; diff --git a/shell/cmdedit.c b/shell/cmdedit.c index 0f064b414..0de18e81f 100644 --- a/shell/cmdedit.c +++ b/shell/cmdedit.c @@ -370,14 +370,16 @@ void input_tab(char* command, char* prompt, int outputFd, int *cursor, int *len) void get_previous_history(struct history **hp, char* command) { - free((*hp)->s); + if ((*hp)->s) + free((*hp)->s); (*hp)->s = strdup(command); *hp = (*hp)->p; } void get_next_history(struct history **hp, char* command) { - free((*hp)->s); + if ((*hp)->s) + free((*hp)->s); (*hp)->s = strdup(command); *hp = (*hp)->n; } @@ -654,7 +656,7 @@ extern void cmdedit_read_input(char* prompt, char command[BUFSIZ]) struct history *h = his_end; if (!h) { - /* No previous history */ + /* No previous history -- this memory is never freed */ h = his_front = malloc(sizeof(struct history)); h->n = malloc(sizeof(struct history)); @@ -666,7 +668,7 @@ extern void cmdedit_read_input(char* prompt, char command[BUFSIZ]) his_end = h->n; history_counter++; } else { - /* Add a new history command */ + /* Add a new history command -- this memory is never freed */ h->n = malloc(sizeof(struct history)); h->n->p = h; -- 2.25.1