anchor.diff:              PByteList(Sector)[Offset] := SECTOR_PATHLESS;
             end;
           end;
  +
  +        Mask := (Mask xor Flags) and -8;
  +        Offset := Flags and -8;
  +        Inc(Flags);
  +        Inc(Flags, Offset);        
         until (Mask = 0);
       until (Cell = Store.LastCell);
   
  -    // add empty item to pool
       // take next queue item
       {$ifdef CPUX86}
       CurrentSectorRec := Store.CurrentSectorRec;
       {$endif}
       SectorRec := CurrentSectorRec.Next;
       if (SectorRec = nil) then Exit;
  +
  +    // add empty item to pool
       CurrentSectorRec.Next := Storage.Pool;
       Storage.Pool := CurrentSectorRec;
  -    if (NativeUInt(CurrentSectorRec.Next{last pool}) >= NativeUInt(@Buffer[8])) then
  +
  +    // check a few pool items
  +    if (NativeUInt(CurrentSectorRec.Next{last pool}) >= NativeUInt(Storage.PoolMarker)) then
       begin
         // next interation
         {$ifdef CPUX86}
  
positive.code:   Store.CurrentSectorRec := BaseSectorRec;
    {$endif}
    Storage := _Storage;
  
    // add buffer items to the pool
    CurrentSectorRec := @Buffer[High(Buffer)];
    SectorRec := @Buffer[High(Buffer) - 1];
    repeat
      CurrentSectorRec.Next := SectorRec;
      Dec(CurrentSectorRec);
      Dec(SectorRec);
    until (CurrentSectorRec = @Buffer[0]);
    Storage.PoolLast.Next := @Buffer[High(Buffer)];
    Storage.PoolLast := CurrentSectorRec{Buffer[0]};
    CurrentSectorRec.Next := nil;
  
    // each sector rec loop
    CurrentSectorRec := {$ifdef CPUX86}Store.CurrentSectorRec{$else}BaseSectorRec{$endif};
  
negative.code:     System.GetMemoryManager(MemoryManager);
    {$endif}
  
  
  end.
  