Browse Source

* don't generate invalid line information for template specializations if no line info is available, resolves #9671

git-svn-id: trunk@14525 -
florian 15 years ago
parent
commit
3fa46810be
1 changed files with 18 additions and 0 deletions
  1. 18 0
      compiler/scanner.pas

+ 18 - 0
compiler/scanner.pas

@@ -2192,16 +2192,34 @@ In case not, the value returned can be arbitrary.
                   ST_LINE:
                   ST_LINE:
                     begin
                     begin
                       replaytokenbuf.read(current_tokenpos.line,sizeof(current_tokenpos.line));
                       replaytokenbuf.read(current_tokenpos.line,sizeof(current_tokenpos.line));
+
+                      { don't generate invalid line info if no sources are available for the current module }
+                      if not(get_module(current_filepos.moduleindex).sources_avail) then
+                        current_tokenpos.line:=0;
+
                       current_filepos:=current_tokenpos;
                       current_filepos:=current_tokenpos;
                     end;
                     end;
                   ST_COLUMN:
                   ST_COLUMN:
                     begin
                     begin
                       replaytokenbuf.read(current_tokenpos.column,sizeof(current_tokenpos.column));
                       replaytokenbuf.read(current_tokenpos.column,sizeof(current_tokenpos.column));
+
+                      { don't generate invalid line info if no sources are available for the current module }
+                      if not(get_module(current_filepos.moduleindex).sources_avail) then
+                        current_tokenpos.column:=0;
+
                       current_filepos:=current_tokenpos;
                       current_filepos:=current_tokenpos;
                     end;
                     end;
                   ST_FILEINDEX:
                   ST_FILEINDEX:
                     begin
                     begin
                       replaytokenbuf.read(current_tokenpos.fileindex,sizeof(current_tokenpos.fileindex));
                       replaytokenbuf.read(current_tokenpos.fileindex,sizeof(current_tokenpos.fileindex));
+
+                      { don't generate invalid line info if no sources are available for the current module }
+                      if not(get_module(current_filepos.moduleindex).sources_avail) then
+                        begin
+                          current_tokenpos.column:=0;
+                          current_tokenpos.line:=0;
+                        end;
+
                       current_filepos:=current_tokenpos;
                       current_filepos:=current_tokenpos;
                     end;
                     end;
                   else
                   else