diff --git a/daemon/kresc.c b/daemon/kresc.c index 178c47777219d331c4fd182f3c275a0e3e2a08e7..9baccf3c61e6d463e95e74e5391276ae21cfe156 100644 --- a/daemon/kresc.c +++ b/daemon/kresc.c @@ -143,8 +143,15 @@ static void complete_members(EditLine * el, const char *str, //Prints all members. while (token) { char *member = afmt("%s.%s", table, token); - printf("\n%s (%s)", member, - get_type_name(member)); + const char *member_type = get_type_name(member); + if (member && member_type) { + printf("\n%s (%s)", member, member_type); + free(member); + free((void *)member_type); + } else if (member) { + printf("\n%s", member); + free(member); + } token = strtok(NULL, "\n"); matches++; } @@ -159,6 +166,7 @@ static void complete_members(EditLine * el, const char *str, if (member_type) { printf("\n%s.%s (%s)", table, token, member_type); + free((void *)member_type); } else { printf("\n%s.%s", table, token); } @@ -184,6 +192,9 @@ static void complete_members(EditLine * el, const char *str, complete_members_exit: free(table); + if(t_type) { + free((void*)t_type); + } } static void complete_globals(EditLine * el, const char *str, int str_len) @@ -220,6 +231,7 @@ static void complete_globals(EditLine * el, const char *str, int str_len) el_deletestr(el, str_len); el_insertstr(el, lastmatch); } + free(globals_tok); } static unsigned char complete(EditLine * el, int ch) @@ -272,6 +284,9 @@ static unsigned char complete(EditLine * el, int ch) //Current line is a function. complete_function(el); } + if (type) { + free((void *)type); + } complete_exit: tok_reset(tok); @@ -300,13 +315,13 @@ static int init_tty(const char *path) close(fd); return 1; } - g_tty = fdopen(fd, "r+"); if (!g_tty) { perror("While opening TTY"); close(fd); return 1; } + // Switch to binary mode and consume the text "> ". if (fprintf(g_tty, "__binary\n") < 0 || !fread(&addr, 2, 1, g_tty) || fflush(g_tty)) {