Browse Source

+ add method ResetSourceLines to TExternalAssembler to reset already written lines

Sven/Sarah Barth 3 years ago
parent
commit
6ac50f4100
1 changed files with 20 additions and 0 deletions
  1. 20 0
      compiler/assemble.pas

+ 20 - 0
compiler/assemble.pas

@@ -150,6 +150,7 @@ interface
         lastinfile   : tinputfile;
       {last section type written}
         lastsectype : TAsmSectionType;
+        procedure ResetSourceLines;
         procedure WriteSourceLine(hp: tailineinfo);
         procedure WriteTempalloc(hp: tai_tempalloc);
         procedure WriteRealConstAsBytes(hp: tai_realconst; const dbdir: string; do_line: boolean);
@@ -1029,6 +1030,25 @@ Implementation
       end;
 
 
+    procedure TExternalAssembler.ResetSourceLines;
+
+      procedure DoReset(f:tinputfile);
+        var
+          i : longint;
+        begin
+          if not assigned(f) then
+            exit;
+          for i:=0 to f.maxlinebuf-1 do
+            if f.linebuf^[i]<0 then
+              f.linebuf^[i]:=-f.linebuf^[i]-1;
+        end;
+
+      begin
+        DoReset(infile);
+        DoReset(lastinfile);
+      end;
+
+
     procedure TExternalAssembler.WriteSourceLine(hp: tailineinfo);
       var
         module : tmodule;