diff options
author | Eric Andersen <andersen@codepoet.org> | 2000-07-19 17:37:57 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2000-07-19 17:37:57 +0000 |
commit | 91a4400fd5a74c6e954b22b276dd38c7ffaeae33 (patch) | |
tree | 33cf648853df478b733452c48f665e35ad65dc1f | |
parent | a16c66335e24009c4cbcd57ce8205b4dfc7b099c (diff) |
Avoid trying to free NULL ptrs. Comment on malloc usages.
-Erik
-rw-r--r-- | cmdedit.c | 10 | ||||
-rw-r--r-- | shell/cmdedit.c | 10 |
2 files changed, 12 insertions, 8 deletions
@@ -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; |