Explorar el Código

* don't hard-code size of linebuf entries
* use reallocmem when growing linebuf instead of getmem+move

git-svn-id: trunk@27792 -

Jonas Maebe hace 11 años
padre
commit
5e76203bc3
Se han modificado 1 ficheros con 7 adiciones y 15 borrados
  1. 7 15
      compiler/finput.pas

+ 7 - 15
compiler/finput.pas

@@ -226,7 +226,7 @@ uses
          close;
          close;
       { free memory }
       { free memory }
         if assigned(linebuf) then
         if assigned(linebuf) then
-         freemem(linebuf,maxlinebuf shl 2);
+         freemem(linebuf,maxlinebuf*sizeof(linebuf^[0]));
       end;
       end;
 
 
 
 
@@ -368,24 +368,16 @@ uses
 
 
 
 
     procedure tinputfile.setline(line,linepos:longint);
     procedure tinputfile.setline(line,linepos:longint);
-      var
-        oldlinebuf  : plongintarr;
       begin
       begin
         if line<1 then
         if line<1 then
          exit;
          exit;
         while (line>=maxlinebuf) do
         while (line>=maxlinebuf) do
-         begin
-           oldlinebuf:=linebuf;
-         { create new linebuf and move old info }
-           getmem(linebuf,(maxlinebuf+linebufincrease) shl 2);
-           if assigned(oldlinebuf) then
-            begin
-              move(oldlinebuf^,linebuf^,maxlinebuf shl 2);
-              freemem(oldlinebuf,maxlinebuf shl 2);
-            end;
-           fillchar(linebuf^[maxlinebuf],linebufincrease shl 2,0);
-           inc(maxlinebuf,linebufincrease);
-         end;
+          begin
+            { create new linebuf and move old info }
+            linebuf:=reallocmem(linebuf,(maxlinebuf+linebufincrease)*sizeof(linebuf^[0]));
+            fillchar(linebuf^[maxlinebuf],linebufincrease*sizeof(linebuf^[0]),0);
+            inc(maxlinebuf,linebufincrease);
+          end;
         linebuf^[line]:=linepos;
         linebuf^[line]:=linepos;
       end;
       end;