diff options
Diffstat (limited to 'res/ael/ael.flex')
-rw-r--r-- | res/ael/ael.flex | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/res/ael/ael.flex b/res/ael/ael.flex index 1ca6427f4..4d7790ec8 100644 --- a/res/ael/ael.flex +++ b/res/ael/ael.flex @@ -447,8 +447,6 @@ includes { STORE_POS; return KW_INCLUDES;} <<EOF>> { char fnamebuf[2048]; if (include_stack_index > 0 && include_stack[include_stack_index-1].globbuf_pos < include_stack[include_stack_index-1].globbuf.gl_pathc-1) { - free(my_file); - my_file = 0; yy_delete_buffer( YY_CURRENT_BUFFER, yyscanner ); include_stack[include_stack_index-1].globbuf_pos++; setup_filestack(fnamebuf, sizeof(fnamebuf), &include_stack[include_stack_index-1].globbuf, include_stack[include_stack_index-1].globbuf_pos, yyscanner, 0); @@ -459,13 +457,13 @@ includes { STORE_POS; return KW_INCLUDES;} free(include_stack[include_stack_index].fname); include_stack[include_stack_index].fname = 0; } + if (my_file) { + free(my_file); + my_file = 0; + } if ( --include_stack_index < 0 ) { yyterminate(); } else { - if (my_file) { - free(my_file); - my_file = 0; - } globfree(&include_stack[include_stack_index].globbuf); include_stack[include_stack_index].globbuf_pos = -1; @@ -672,12 +670,16 @@ static void setup_filestack(char *fnamebuf2, int fnamebuf_siz, glob_t *globbuf, buffer[stats.st_size] = 0; ast_log(LOG_NOTICE," --Read in included file %s, %d chars\n",fnamebuf2, (int)stats.st_size); fclose(in1); - if (my_file) - free(my_file); - my_file = strdup(fnamebuf2); + if (include_stack[include_stack_index].fname) { + free(include_stack[include_stack_index].fname); + include_stack[include_stack_index].fname = 0; + } include_stack[include_stack_index].fname = strdup(my_file); include_stack[include_stack_index].lineno = my_lineno; include_stack[include_stack_index].colno = my_col+yyleng; + if (my_file) + free(my_file); + my_file = strdup(fnamebuf2); if (create) include_stack[include_stack_index].globbuf = *globbuf; |