]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
fix a bug in computing line numbers
authorLuigi Rizzo <rizzo@icir.org>
Fri, 28 Apr 2006 15:24:30 +0000 (15:24 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Fri, 28 Apr 2006 15:24:30 +0000 (15:24 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@23151 65c4cc65-6c06-0410-ace0-fbb531ad65f3

pbx/ael/ael.flex
pbx/ael/ael_lex.c

index 0a063b8b705f95fdc5d80a076808624ed51e1e31..ffd9cdef0f8d3a106fc663a9d19424a2e3ea5160 100644 (file)
@@ -78,7 +78,7 @@ static int commaout = 0;
  * current line, column and filename, updated as we read the input.
  */
 static int my_lineno = 1;      /* current line in the source */
-static int my_col = 0;         /* current column in the source */
+static int my_col = 1;         /* current column in the source */
 char *my_file = 0;             /* used also in the bison code */
 char *prev_word;               /* XXX document it */
 
@@ -155,7 +155,7 @@ static void pbcwhere(const char *text, int *line, int *col )
 #define        STORE_END do {                                  \
                pbcwhere(yytext, &my_lineno, &my_col);  \
                yylloc->last_line = my_lineno;          \
-               yylloc->last_column = my_col;           \
+               yylloc->last_column = my_col - 1;       \
        } while (0)
 #else
 #define        STORE_POS
@@ -253,7 +253,7 @@ includes    { STORE_POS; return KW_INCLUDES;}
 
 <paren>{NOPARENS}[\(\[\{]      {
                char c = yytext[yyleng-1];
-               STORE_START;
+               // STORE_START;
                if (c == '(')
                        parencount++;
                pbcpush(c);
@@ -293,11 +293,11 @@ includes  { STORE_POS; return KW_INCLUDES;}
                        return word;
                }
 
-               STORE_END;
                parencount--;
                if( parencount >= 0){
                        yymore();
                } else {
+                       STORE_END;
                        yylval->str = strdup(yytext);
                        if(yyleng > 1 )
                                *(yylval->str+yyleng-1)=0;
index b1aa53f51f05815e67b267be73cd035514b6ad40..62aad1370b4d86dd2b4a849e8b6623def1601bd0 100644 (file)
@@ -694,7 +694,7 @@ static int commaout = 0;
  * current line, column and filename, updated as we read the input.
  */
 static int my_lineno = 1;      /* current line in the source */
-static int my_col = 0;         /* current column in the source */
+static int my_col = 1;         /* current column in the source */
 char *my_file = 0;             /* used also in the bison code */
 char *prev_word;               /* XXX document it */
 
@@ -771,7 +771,7 @@ static void pbcwhere(const char *text, int *line, int *col )
 #define        STORE_END do {                                  \
                pbcwhere(yytext, &my_lineno, &my_col);  \
                yylloc->last_line = my_lineno;          \
-               yylloc->last_column = my_col;           \
+               yylloc->last_column = my_col - 1;       \
        } while (0)
 #else
 #define        STORE_POS
@@ -1365,7 +1365,7 @@ YY_RULE_SETUP
 #line 254 "ael.flex"
 {
                char c = yytext[yyleng-1];
-               STORE_START;
+               // STORE_START;
                if (c == '(')
                        parencount++;
                pbcpush(c);
@@ -1417,11 +1417,11 @@ YY_RULE_SETUP
                        return word;
                }
 
-               STORE_END;
                parencount--;
                if( parencount >= 0){
                        yymore();
                } else {
+                       STORE_END;
                        yylval->str = strdup(yytext);
                        if(yyleng > 1 )
                                *(yylval->str+yyleng-1)=0;