Răsfoiți Sursa

* Fixed overflow check for RELOC_RELATIVE_24.

git-svn-id: trunk@11483 -
yury 17 ani în urmă
părinte
comite
c92c034882
1 a modificat fișierele cu 2 adăugiri și 2 ștergeri
  1. 2 2
      compiler/ogcoff.pas

+ 2 - 2
compiler/ogcoff.pas

@@ -841,9 +841,9 @@ const pemagic : array[0..3] of byte = (
               RELOC_RELATIVE_24:
               RELOC_RELATIVE_24:
                 begin
                 begin
                   relocval:=(relocval - mempos - objreloc.dataoffset) shr 2 - 2;
                   relocval:=(relocval - mempos - objreloc.dataoffset) shr 2 - 2;
-                  address:=address or relocval and $ffffff;
+                  address:=address or (relocval and $ffffff);
                   relocval:=relocval shr 24;
                   relocval:=relocval shr 24;
-                  if (relocval<>$3f) and (relocval<>0) then
+                  if (relocval<>$ff) and (relocval<>0) then
                     internalerror(200606085);  { offset overflow }
                     internalerror(200606085);  { offset overflow }
                 end;
                 end;
 {$endif arm}
 {$endif arm}