Index: apps/app_directory.c =================================================================== --- apps/app_directory.c (revision 75068) +++ apps/app_directory.c (working copy) @@ -404,6 +404,7 @@ int lastuserchoice = 0; char *start, *conv, *stringp = NULL; const char *pos; + int breakout = 0; if (ast_strlen_zero(context)) { ast_log(LOG_WARNING, @@ -527,6 +528,7 @@ * user hungup */ lastuserchoice = 0; + breakout = 1; break; case '1': /* user pressed '1' and extensions exists; @@ -534,19 +536,24 @@ a goto() on the channel */ lastuserchoice = res; + breakout = 1; break; case '*': /* user pressed '*' to skip something found */ lastuserchoice = res; + breakout = 0; res = 0; break; default: + breakout = 1; break; } free(conv); - break; + if (breakout) + break; } - free(conv); + else + free(conv); } } }