Browse Source

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

git-svn-id: trunk@37681 -

nickysn 7 years ago
parent
commit
3ca4d94226
1 changed files with 3 additions and 2 deletions
  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^);