Avoid trying to free NULL ptrs.  Comment on malloc usages.
 -Erik
diff --git a/shell/cmdedit.c b/shell/cmdedit.c
index 0f064b4..0de18e8 100644
--- a/shell/cmdedit.c
+++ b/shell/cmdedit.c
@@ -370,14 +370,16 @@
 
 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 @@
 		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 @@
 			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;