Browse Source

Check index of CRC tables for Test_double_checksum_write code

Pierre Muller 3 months ago
parent
commit
9849de984b
1 changed files with 6 additions and 3 deletions
  1. 6 3
      compiler/ppu.pas

+ 6 - 3
compiler/ppu.pas

@@ -216,17 +216,17 @@ begin
   if not assigned(interface_crc_array) then
   if not assigned(interface_crc_array) then
     begin
     begin
       new(interface_crc_array);
       new(interface_crc_array);
-      fillchar(interface_crc_array^,sizeof(interface_crc_array),#$ff);
+      fillchar(interface_crc_array^,sizeof(tcrc_array),#$ff);
     end;
     end;
   if not assigned(indirect_crc_array) then
   if not assigned(indirect_crc_array) then
     begin
     begin
       new(indirect_crc_array);
       new(indirect_crc_array);
-      fillchar(indirect_crc_array^,sizeof(indirect_crc_array),#$ff);
+      fillchar(indirect_crc_array^,sizeof(tcrc_array),#$ff);
     end;
     end;
   if not assigned(implementation_crc_array) then
   if not assigned(implementation_crc_array) then
     begin
     begin
       new(implementation_crc_array);
       new(implementation_crc_array);
-      fillchar(implementation_crc_array^,sizeof(implementation_crc_array),#$ff);
+      fillchar(implementation_crc_array^,sizeof(tcrc_array),#$ff);
     end;
     end;
 {$endif Test_Double_checksum}
 {$endif Test_Double_checksum}
 end;
 end;
@@ -428,6 +428,7 @@ begin
      else
      else
        begin
        begin
          if (implementation_read_crc_index<crc_array_size) and
          if (implementation_read_crc_index<crc_array_size) and
+            (implementation_read_crc_index<implementation_write_crc_index) and
             (implementation_crc_array^[implementation_read_crc_index]<>crc) then
             (implementation_crc_array^[implementation_read_crc_index]<>crc) then
            begin
            begin
              do_comment(CRC_implementation_Change_Message_Level,'implementation CRC changed at index '+tostr(implementation_read_crc_index));
              do_comment(CRC_implementation_Change_Message_Level,'implementation CRC changed at index '+tostr(implementation_read_crc_index));
@@ -466,6 +467,7 @@ begin
         else
         else
           begin
           begin
             if (interface_read_crc_index<crc_array_size) and
             if (interface_read_crc_index<crc_array_size) and
+               (interface_read_crc_index<interface_write_crc_index) and
                (interface_crc_array^[interface_read_crc_index]<>interface_crc) then
                (interface_crc_array^[interface_read_crc_index]<>interface_crc) then
               begin
               begin
                 do_comment(CRC_Interface_Change_Message_Level,'interface CRC changed at index '+tostr(interface_read_crc_index));
                 do_comment(CRC_Interface_Change_Message_Level,'interface CRC changed at index '+tostr(interface_read_crc_index));
@@ -507,6 +509,7 @@ begin
              else
              else
                begin
                begin
                  if (indirect_read_crc_index<crc_array_size) and
                  if (indirect_read_crc_index<crc_array_size) and
+                    (indirect_read_crc_index<indirect_write_crc_index) and
                     (indirect_crc_array^[indirect_read_crc_index]<>indirect_crc) then
                     (indirect_crc_array^[indirect_read_crc_index]<>indirect_crc) then
                    begin
                    begin
                      do_comment(CRC_Indirect_Change_Message_Level,'Indirect CRC changed at index '+tostr(indirect_read_crc_index));
                      do_comment(CRC_Indirect_Change_Message_Level,'Indirect CRC changed at index '+tostr(indirect_read_crc_index));