Pārlūkot izejas kodu

+ also check the heap block ID when freeing a suballocated memory block from the
win16 global heap

git-svn-id: trunk@37681 -

nickysn 7 gadi atpakaļ
vecāks
revīzija
3ca4d94226
1 mainītis faili ar 3 papildinājumiem un 2 dzēšanām
  1. 3 2
      rtl/win16/glbheap.inc

+ 3 - 2
rtl/win16/glbheap.inc

@@ -195,9 +195,10 @@ circular linked list.
       begin
         ASize:=(ASize+3) and $fffc;
         CurBlock:=Seg(Addr^);
-        if (Ofs(Addr^)<SizeOf(TGlobalHeapBlockHeader)) or ((Ofs(Addr^) and 3)<>0) then
-          HandleError(204);
         CurBlockP:=Ptr(CurBlock,0);
+        if (Ofs(Addr^)<SizeOf(TGlobalHeapBlockHeader)) or ((Ofs(Addr^) and 3)<>0) or
+           (CurBlockP^.ID<>GlobalHeapBlockID) then
+          HandleError(204);
         if CurBlockP^.TotalFreeSpaceInBlock=0 then
           begin
             CurBlockP^.FirstFreeOfs:=Ofs(Addr^);