Index: main/editline/el.c =================================================================== --- main/editline/el.c (revision 277775) +++ main/editline/el.c (working copy) @@ -55,15 +55,16 @@ #include #include "el.h" +static EditLine global_el; + /* el_init(): * Initialize editline and set default parameters. */ public EditLine * el_init(const char *prog, FILE *fin, FILE *fout, FILE *ferr) { + EditLine *el = &global_el; - EditLine *el = (EditLine *) el_malloc(sizeof(EditLine)); - if (el == NULL) return (NULL); @@ -81,7 +82,7 @@ if (term_init(el) == -1) { free(el->el_prog); - el_free(el); + el->el_prog = NULL; return NULL; } (void) key_init(el); @@ -123,7 +124,7 @@ if (el->el_prog) el_free((ptr_t) el->el_prog); - el_free((ptr_t) el); + el->el_prog = NULL; } Index: main/editline/term.c =================================================================== --- main/editline/term.c (revision 277775) +++ main/editline/term.c (working copy) @@ -88,7 +88,7 @@ #define TC_BUFSIZE 2048 -#define GoodStr(a) (el->el_term.t_str[a] != NULL && \ +#define GoodStr(a) (el->el_term.t_str && el->el_term.t_str[a] != NULL && \ el->el_term.t_str[a][0] != '\0') #define Str(a) el->el_term.t_str[a] #define Val(a) el->el_term.t_val[a] Index: main/editline/read.c =================================================================== --- main/editline/read.c (revision 277775) +++ main/editline/read.c (working copy) @@ -54,7 +54,7 @@ #include #include "el.h" -#define OKCMD -1 +#define OKCMD -2 private int read__fixio(int, int); private int read_preread(EditLine *);