diff --git a/src/sl/saveload.cpp b/src/sl/saveload.cpp index f81cfac971..9a31d5ddaf 100644 --- a/src/sl/saveload.cpp +++ b/src/sl/saveload.cpp @@ -200,10 +200,10 @@ void MemoryDumper::StartAutoLength() this->bufe = this->autolen_buf_end; } -std::pair MemoryDumper::StopAutoLength() +std::span MemoryDumper::StopAutoLength() { assert(this->saved_buf != nullptr); - auto res = std::make_pair(this->autolen_buf, this->buf - this->autolen_buf); + auto res = std::span(this->autolen_buf, this->buf - this->autolen_buf); this->buf = this->saved_buf; this->bufe = this->saved_bufe; @@ -2003,8 +2003,8 @@ void SlObjectSaveFiltered(void *object, const SaveLoadTable &slt) SlObjectIterateBase(object, slt); auto result = _sl.dumper->StopAutoLength(); _sl.need_length = NL_WANTLENGTH; - SlSetLength(result.second); - _sl.dumper->CopyBytes(result.first, result.second); + SlSetLength(result.size()); + _sl.dumper->CopyBytes(result); } else { SlObjectIterateBase(object, slt); } @@ -2275,8 +2275,8 @@ void SlAutolength(AutolengthProc *proc, void *arg) auto result = _sl.dumper->StopAutoLength(); /* Setup length */ _sl.need_length = NL_WANTLENGTH; - SlSetLength(result.second); - _sl.dumper->CopyBytes(result.first, result.second); + SlSetLength(result.size()); + _sl.dumper->CopyBytes(result); } uint8_t SlSaveToTempBufferSetup() @@ -2290,7 +2290,7 @@ uint8_t SlSaveToTempBufferSetup() return (uint8_t) orig_need_length; } -std::pair SlSaveToTempBufferRestore(uint8_t state) +std::span SlSaveToTempBufferRestore(uint8_t state) { NeedLength orig_need_length = (NeedLength)state; @@ -2316,7 +2316,7 @@ extern void SlConditionallySaveCompletion(const SlConditionallySaveState &state, if (!save) _sl.dumper->buf = _sl.dumper->autolen_buf + state.current_len; } else { auto result = SlSaveToTempBufferRestore(state.need_length); - if (save) _sl.dumper->CopyBytes(result.first, result.second); + if (save) _sl.dumper->CopyBytes(result); } } diff --git a/src/sl/saveload.h b/src/sl/saveload.h index 29688d27c0..7f7a1b0878 100644 --- a/src/sl/saveload.h +++ b/src/sl/saveload.h @@ -975,12 +975,11 @@ template std::span SlSaveToTempBuffer(F proc) { extern uint8_t SlSaveToTempBufferSetup(); - extern std::pair SlSaveToTempBufferRestore(uint8_t state); + extern std::span SlSaveToTempBufferRestore(uint8_t state); uint8_t state = SlSaveToTempBufferSetup(); proc(); - auto result = SlSaveToTempBufferRestore(state); - return std::span(result.first, result.second); + return SlSaveToTempBufferRestore(state); } /** diff --git a/src/sl/saveload_buffer.h b/src/sl/saveload_buffer.h index e9d069687a..88f88acc98 100644 --- a/src/sl/saveload_buffer.h +++ b/src/sl/saveload_buffer.h @@ -268,7 +268,7 @@ struct MemoryDumper { void Flush(SaveFilter &writer); size_t GetSize() const; void StartAutoLength(); - std::pair StopAutoLength(); + std::span StopAutoLength(); bool IsAutoLengthActive() const { return this->saved_buf != nullptr; } };