diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 84d182e834..b64c956569 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -101,6 +101,7 @@ namespace upstream_sl { void SlFixPointers(); void SlFixPointerChunkByID(uint32 id); void SlSaveChunkChunkByID(uint32 id); + void SlResetLoadState(); } /** What are we currently doing? */ @@ -3516,6 +3517,8 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) _sl.reader = new ReadBuffer(_sl.lf); _next_offs = 0; + upstream_sl::SlResetLoadState(); + if (!load_check) { ResetSaveloadData(); diff --git a/src/saveload/upstream/saveload.cpp b/src/saveload/upstream/saveload.cpp index b682f00e1c..b3b5b146ff 100644 --- a/src/saveload/upstream/saveload.cpp +++ b/src/saveload/upstream/saveload.cpp @@ -2128,6 +2128,12 @@ void SlSaveChunkChunkByID(uint32 id) SlSaveChunk(*ch); } +/** Reset state prior to a load */ +void SlResetLoadState() +{ + _next_offs = 0; +} + SaveLoadTable SaveLoadHandler::GetLoadDescription() const { assert(this->load_description.has_value());