# HG changeset patch # User mjsousa # Date 1395231223 0 # Node ID 599e88d12f9a99e705c80e6907dbaa00e46ef369 # Parent c61b2e370181d73f9559d24510960842b7aabee7 Track of line number correctly when input file has code with very long lines. diff -r c61b2e370181 -r 599e88d12f9a stage1_2/iec_flex.ll --- a/stage1_2/iec_flex.ll Wed Mar 19 12:05:18 2014 +0000 +++ b/stage1_2/iec_flex.ll Wed Mar 19 12:13:43 2014 +0000 @@ -1780,7 +1780,7 @@ /* Tracking Functions... */ /*************************/ -#define MAX_LINE_LENGTH 1000 +#define MAX_LINE_LENGTH 1024 tracking_t *GetNewTracking(FILE* in_file) { tracking_t* new_env = new tracking_t; @@ -1821,8 +1821,12 @@ return 0; } - current_tracking->lineNumber++; current_tracking->lineLength = strlen(current_tracking->buffer); + + /* only increment line number if the buffer was big enough to read the whole line! */ + char last_char = current_tracking->buffer[current_tracking->lineLength - 1]; + if (('\n' == last_char) || ('\r' == last_char)) // '\r' ---> CR, '\n' ---> LF + current_tracking->lineNumber++; } b[0] = current_tracking->buffer[current_tracking->currentChar];