Martijn Laan пре 1 година
родитељ
комит
efe07a92d8
2 измењених фајлова са 12 додато и 7 уклоњено
  1. 9 4
      Projects/CompForm.pas
  2. 3 3
      Projects/FileClass.pas

+ 9 - 4
Projects/CompForm.pas

@@ -1131,15 +1131,20 @@ procedure TCompileForm.OpenFile(AMemo: TCompScintFileEdit; AFilename: String;
     Buf: array[0..2] of Byte;
   begin
     Result := seAuto;
-    var Size: Integer := Stream.Size;
-    if (Size >= SizeOf(Buf)) and (Stream.Read(Buf, SizeOf(Buf)) = SizeOf(Buf)) and
+    var StreamSize := Stream.Size;
+    var CappedSize: Integer;
+    if Stream.Size > High(Integer) then
+      CappedSize := High(Integer)
+    else
+      CappedSize := Integer(StreamSize);
+    if (CappedSize >= SizeOf(Buf)) and (Stream.Read(Buf, SizeOf(Buf)) = SizeOf(Buf)) and
        (Buf[0] = $EF) and (Buf[1] = $BB) and (Buf[2] = $BF) then
       Result := seUTF8
     else begin
       Stream.Seek(0, soFromBeginning);
       var S: AnsiString;
-      SetLength(S, Size);
-      SetLength(S, Stream.Read(S[1], Size));
+      SetLength(S, CappedSize);
+      SetLength(S, Stream.Read(S[1], CappedSize));
       if IsUTF8String(S) then
         Result := seUTF8NoPreamble;
     end;

+ 3 - 3
Projects/FileClass.pas

@@ -512,11 +512,11 @@ begin
       end else begin
         var OldPosition := GetPosition;
         try
-          var Size := CappedSize; //can't be 0
+          var CappedSize := GetCappedSize; //can't be 0
           Seek(0);
           var S2: AnsiString;
-          SetLength(S2, Size);
-          SetLength(S2, Read(S2[1], Size));
+          SetLength(S2, CappedSize);
+          SetLength(S2, Read(S2[1], CappedSize));
           if IsUTF8String(S2) then
             FCodePage := CP_UTF8;
         finally