This branch will resolve the bug 7635.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@38652 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
d46e12c4a6
commit
0d2c199eca
|
@ -0,0 +1,13 @@
|
|||
context test1
|
||||
{
|
||||
771 => {
|
||||
for( i=0;
|
||||
${i} <= 3;
|
||||
i = ${i} + 1 )
|
||||
NoOp(i is '${i}');
|
||||
}
|
||||
772 => {
|
||||
for(i=0; ${i} <= 3;i= ${i} + 1 )
|
||||
NoOp(i is '${i}');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
Executed ast_register_file_version();
|
||||
Executed ast_register_file_version();
|
||||
Executed ast_register_file_version();
|
||||
Executed ast_register_file_version();
|
||||
|
||||
(You can use the -n option if you aren't interested in seeing all the instructions generated by the compiler)
|
||||
|
||||
Executed ast_cli_register_multiple();
|
||||
LOG: lev:2 file:../pbx/pbx_ael.c line:3480 func: pbx_load_module Starting AEL load process.
|
||||
LOG: lev:2 file:../pbx/pbx_ael.c line:3487 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
|
||||
LOG: lev:2 file:../pbx/pbx_ael.c line:3490 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
|
||||
LOG: lev:2 file:../pbx/pbx_ael.c line:3493 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
|
||||
Executed ast_context_create(conts, name=test1, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=771, priority=1, label=(null), callerid=(null), appl=Set, data=i=$[0], FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=771, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[
|
||||
${i} <= 3]?3:6, FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=771, priority=3, label=(null), callerid=(null), appl=NoOp, data=i is '${i}', FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=771, priority=4, label=(null), callerid=(null), appl=Set, data=i=$[ ${i} + 1 ], FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=771, priority=5, label=(null), callerid=(null), appl=Goto, data=2, FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=771, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish for-test1-1, FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=772, priority=1, label=(null), callerid=(null), appl=Set, data=i=$[0], FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=772, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[ ${i} <= 3]?3:6, FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=772, priority=3, label=(null), callerid=(null), appl=NoOp, data=i is '${i}', FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=772, priority=4, label=(null), callerid=(null), appl=Set, data=i=$[ ${i} + 1 ], FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=772, priority=5, label=(null), callerid=(null), appl=Goto, data=2, FREE, registrar=pbx_ael);
|
||||
Executed ast_add_extension2(con, rep=0, exten=772, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish for-test1-2, FREE, registrar=pbx_ael);
|
||||
LOG: lev:2 file:../pbx/pbx_ael.c line:3495 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
|
||||
Executed ast_merge_contexts_and_delete();
|
||||
LOG: lev:2 file:../pbx/pbx_ael.c line:3498 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
|
||||
Executed ast_walk_contexts();
|
||||
LOG: lev:2 file:../pbx/pbx_ael.c line:3501 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
|
||||
LOG: lev:4 file:ael2_parse line:253 func: main 1 contexts, 2 extensions, 12 priorities
|
||||
Executed ast_unregister_file_version();
|
||||
Executed ast_unregister_file_version();
|
||||
Executed ast_unregister_file_version();
|
||||
Executed ast_unregister_file_version();
|
|
@ -149,6 +149,8 @@ static void print_pval_list(FILE *fin, pval *item, int depth);
|
|||
|
||||
static struct pval *find_label_in_current_extension(const char *label);
|
||||
static struct pval *find_label_in_current_db(const char *context, const char *exten, const char *label);
|
||||
static void remove_spaces_before_equals(char *str);
|
||||
|
||||
|
||||
/* PRETTY PRINTER FOR AEL: ============================================================================= */
|
||||
|
||||
|
@ -2526,6 +2528,25 @@ void linkexten(struct ael_extension *exten, struct ael_extension *add)
|
|||
exten->next_exten = add;
|
||||
}
|
||||
|
||||
static void remove_spaces_before_equals(char *str)
|
||||
{
|
||||
char *p;
|
||||
while( str && *str && *str != '=' )
|
||||
{
|
||||
if( *str == ' ' || *str == '\n' || *str == '\r' || *str == '\t' )
|
||||
{
|
||||
p = str;
|
||||
while( *p )
|
||||
{
|
||||
*p = *(p+1);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
else
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
void gen_prios(struct ael_extension *exten, char *label, pval *statement, struct ael_extension *mother_exten )
|
||||
{
|
||||
pval *p,*p2,*p3;
|
||||
|
@ -2554,6 +2575,7 @@ void gen_prios(struct ael_extension *exten, char *label, pval *statement, struct
|
|||
pr->type = AEL_APPCALL;
|
||||
snprintf(buf1,sizeof(buf1),"%s=$[%s]", p->u1.str, p->u2.val);
|
||||
pr->app = strdup("Set");
|
||||
remove_spaces_before_equals(buf1);
|
||||
pr->appargs = strdup(buf1);
|
||||
pr->origin = p;
|
||||
linkprio(exten, pr);
|
||||
|
@ -2612,6 +2634,7 @@ void gen_prios(struct ael_extension *exten, char *label, pval *statement, struct
|
|||
for_init->app = strdup("Set");
|
||||
|
||||
strcpy(buf2,p->u1.for_init);
|
||||
remove_spaces_before_equals(buf2);
|
||||
strp = strchr(buf2, '=');
|
||||
strp2 = strchr(p->u1.for_init, '=');
|
||||
if (strp) {
|
||||
|
@ -2626,6 +2649,7 @@ void gen_prios(struct ael_extension *exten, char *label, pval *statement, struct
|
|||
for_inc->app = strdup("Set");
|
||||
|
||||
strcpy(buf2,p->u3.for_inc);
|
||||
remove_spaces_before_equals(buf2);
|
||||
strp = strchr(buf2, '=');
|
||||
strp2 = strchr(p->u3.for_inc, '=');
|
||||
if (strp) {
|
||||
|
@ -3308,6 +3332,7 @@ void ast_compile_ael2(struct ast_context **local_contexts, struct pval *root)
|
|||
np2->type = AEL_APPCALL;
|
||||
np2->app = strdup("Set");
|
||||
snprintf(buf,sizeof(buf),"%s=${ARG%d}", lp->u1.str, argc++);
|
||||
remove_spaces_before_equals(buf);
|
||||
np2->appargs = strdup(buf);
|
||||
linkprio(exten, np2);
|
||||
}
|
||||
|
|
Reference in New Issue