Saveload: Fix SlNullPointers with upstream chunks

This commit is contained in:
Jonathan G Rennison
2024-02-21 18:40:23 +00:00
parent b58ecb0cd8
commit ba1fa3ad29
3 changed files with 36 additions and 3 deletions

View File

@@ -90,6 +90,7 @@ enum ChunkSaveLoadSpecialOp {
CSLSO_PRE_LOAD,
CSLSO_PRE_LOADCHECK,
CSLSO_PRE_PTRS,
CSLSO_PRE_NULL_PTRS,
CSLSO_SHOULD_SAVE_CHUNK,
};
enum ChunkSaveLoadSpecialOpResult {
@@ -97,6 +98,7 @@ enum ChunkSaveLoadSpecialOpResult {
CSLSOR_LOAD_CHUNK_CONSUMED,
CSLSOR_DONT_SAVE_CHUNK,
CSLSOR_UPSTREAM_SAVE_CHUNK,
CSLSOR_UPSTREAM_NULL_PTRS,
};
typedef ChunkSaveLoadSpecialOpResult ChunkSaveLoadSpecialProc(uint32_t, ChunkSaveLoadSpecialOp);
@@ -189,6 +191,8 @@ namespace upstream_sl {
SlFixPointerChunkByID(id);
});
return CSLSOR_LOAD_CHUNK_CONSUMED;
case CSLSO_PRE_NULL_PTRS:
return CSLSOR_UPSTREAM_NULL_PTRS;
case CSLSO_SHOULD_SAVE_CHUNK:
return CSLSOR_UPSTREAM_SAVE_CHUNK;
default:
@@ -234,6 +238,9 @@ namespace upstream_sl {
SlFixPointerChunkByID(id);
});
return CSLSOR_LOAD_CHUNK_CONSUMED;
case CSLSO_PRE_NULL_PTRS:
if (!F::LoadUpstream()) return CSLSOR_NONE;
return CSLSOR_UPSTREAM_NULL_PTRS;
case CSLSO_SHOULD_SAVE_CHUNK:
return F::SaveUpstream() ? CSLSOR_UPSTREAM_SAVE_CHUNK : CSLSOR_NONE;
default: