aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xasterisk.c10
-rwxr-xr-xcli.c12
2 files changed, 15 insertions, 7 deletions
diff --git a/asterisk.c b/asterisk.c
index 8b4ae4504..b0635c7f2 100755
--- a/asterisk.c
+++ b/asterisk.c
@@ -686,14 +686,14 @@ static int ast_el_read_char(EditLine *el, char *cp)
static char *cli_prompt(EditLine *el)
{
- char prompt[80];
+ static char prompt[80];
if (remotehostname)
snprintf(prompt, sizeof(prompt), ASTERISK_PROMPT2, remotehostname);
else
snprintf(prompt, sizeof(prompt), ASTERISK_PROMPT);
- return strdup(prompt);
+ return(prompt);
}
static char **ast_el_strtoarr(char *buf)
@@ -839,7 +839,7 @@ static char *cli_complete(EditLine *el, int ch)
if (nummatches == 1) {
/* Found an exact match */
- el_insertstr(el, strdup(" "));
+ el_insertstr(el, " ");
retval = CC_REFRESH;
} else {
/* Must be more than one match */
@@ -854,11 +854,11 @@ static char *cli_complete(EditLine *el, int ch)
ast_cli_display_match_list(matches, nummatches, maxlen);
retval = CC_REDISPLAY;
} else {
- el_insertstr(el,strdup(" "));
+ el_insertstr(el," ");
retval = CC_REFRESH;
}
}
-
+ free(matches);
}
return (char *)retval;
diff --git a/cli.c b/cli.c
index b9cb021d1..340e8c1d7 100755
--- a/cli.c
+++ b/cli.c
@@ -278,7 +278,10 @@ static int handle_commandmatchesarray(int fd, int argc, char *argv[])
printf("command matchesarray for '%s' %s got '%s'\n", argv[2], argv[3], matches[x]);
#endif
len += sprintf( buf + len, "%s ", matches[x]);
+ free(matches[x]);
+ matches[x] = NULL;
}
+ free(matches);
}
#if 0
printf("array for '%s' %s got '%s'\n", argv[2], argv[3], buf);
@@ -765,12 +768,16 @@ normal:
int ast_cli_generatornummatches(char *text, char *word)
{
int matches = 0, i = 0;
- char *buf, *oldbuf;
+ char *buf, *oldbuf = NULL;
while ( (buf = ast_cli_generator(text, word, i)) ) {
- if (++i > 1 && strcmp(buf,oldbuf) == 0)
+ if (++i > 1 && strcmp(buf,oldbuf) == 0) {
+ free(buf);
continue;
+ }
+ if (oldbuf)
+ free(oldbuf);
oldbuf = buf;
matches++;
}
@@ -866,6 +873,7 @@ static char *__ast_cli_generator(char *text, char *word, int state, int lock)
if (res) {
if (lock)
ast_pthread_mutex_unlock(&clilock);
+ free(dup);
return res ? strdup(res) : NULL;
}
}