The buffer start time is calculated by subtracting the TimeBufferHintSeconds from the stream length:
const uint32 BufferStartTimeMS = UE::LWC::FloatToIntCastChecked<uint32>(FoundReplay->StreamInfo.LengthInMS - (TimeBufferHintSeconds * 1000.0));
However, if the TimeBufferHintSeconds is larger than the stream length, the negative result being cast to a uint32 will result in a very large number for the BufferStartTimeMS, causing all but the most recent checkpoint to be removed.

Steps to Reproduce

Set up an in-memory replay with checkpoints, and set TimeBufferHintSeconds to something multiple times larger than the delay between checkpoints.
When getting the checkpoint archive for a stream that is shorter than TimeBufferHintSeconds, all but the last checkpoint will be removed. 

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-210018 in the post.

Login to Vote

ComponentUE - Networking
Affects Versions5.4
Target Fix5.5
CreatedMar 18, 2024
UpdatedMar 19, 2024