Index: interps.c =================================================================== --- interps.c (revision 486) +++ interps.c (working copy) @@ -424,10 +424,11 @@ interpreter_completer (char *text, char struct interp *interp; /* We expect only a very limited number of interpreters, so just - allocate room for all of them. */ + allocate room for all of them plus one for the last that must be NULL + to correctly end the list. */ for (interp = interp_list; interp != NULL; interp = interp->next) ++alloced; - matches = (char **) xmalloc (alloced * sizeof (char *)); + matches = (char **) xcalloc (alloced + 1, sizeof (char *)); num_matches = 0; textlen = strlen (text); @@ -460,12 +461,6 @@ interpreter_completer (char *text, char xfree (matches); matches = NULL; } - else if (num_matches < alloced) - { - matches = (char **) xrealloc ((char *) matches, ((num_matches + 1) - * sizeof (char *))); - matches[num_matches] = NULL; - } return matches; }