diff --git a/src/sl/saveload.cpp b/src/sl/saveload.cpp index 052f478596..2b10698295 100644 --- a/src/sl/saveload.cpp +++ b/src/sl/saveload.cpp @@ -4204,6 +4204,20 @@ void SlUnreachablePlaceholder() NOT_REACHED(); } +SaveLoadVersion SlExecWithSlVersionStart(SaveLoadVersion use_version) +{ + DEBUG(sl, 4, "SlExecWithSlVersion start: %u", use_version); + SaveLoadVersion old_ver = _sl_version; + _sl_version = use_version; + return old_ver; +} + +void SlExecWithSlVersionEnd(SaveLoadVersion old_version) +{ + DEBUG(sl, 4, "SlExecWithSlVersion end"); + _sl_version = old_version; +} + const char *ChunkIDDumper::operator()(uint32_t id) { seprintf(this->buffer, lastof(this->buffer), "%c%c%c%c", id >> 24, id >> 16, id >> 8, id); diff --git a/src/sl/saveload.h b/src/sl/saveload.h index a55acd3a08..1900c0572f 100644 --- a/src/sl/saveload.h +++ b/src/sl/saveload.h @@ -135,11 +135,12 @@ private: template void SlExecWithSlVersion(SaveLoadVersion use_version, F proc) { - extern SaveLoadVersion _sl_version; - SaveLoadVersion old_ver = _sl_version; - _sl_version = use_version; + extern SaveLoadVersion SlExecWithSlVersionStart(SaveLoadVersion use_version); + extern void SlExecWithSlVersionEnd(SaveLoadVersion old_version); + + SaveLoadVersion old_ver = SlExecWithSlVersionStart(use_version); auto guard = scope_guard([&]() { - _sl_version = old_ver; + SlExecWithSlVersionEnd(old_ver); }); proc(); }