bool ArcMemory::Seek(int64 Offset,int Method)
{
  if (!Loaded)
    return false;
  if (Method==SEEK_SET)
    SeekPos=Min(Offset,ArcData.Size());
  else
    if (Method==SEEK_CUR || Method==SEEK_END)
    {
      if (Method==SEEK_END)
        SeekPos=ArcData.Size();
      SeekPos+=(uint64)Offset;
      if (SeekPos>ArcData.Size())
        SeekPos=Offset<0 ? 0 : ArcData.Size();
    }
  return true;
}
The software writes data past the end, or before the beginning, of the intended buffer.