diff --git a/src/adapters/asl_store_index_fs/asl_store_index_fs.c b/src/adapters/asl_store_index_fs/asl_store_index_fs.c index 9f42f5e..bcf2114 100644 --- a/src/adapters/asl_store_index_fs/asl_store_index_fs.c +++ b/src/adapters/asl_store_index_fs/asl_store_index_fs.c @@ -4730,11 +4730,20 @@ amduat_asl_store_error_t amduat_asl_store_index_fs_snapshot_create( return AMDUAT_ASL_STORE_ERR_IO; } - if (!amduat_asl_replay_init(&replay_state)) { - free(index_path); - free(log_path); - free(manifest_path); - return AMDUAT_ASL_STORE_ERR_IO; + { + amduat_asl_snapshot_id_t prev_snap_id; + amduat_asl_log_position_t prev_anchor; + bool prev_loaded = false; + if (amduat_asl_store_index_fs_find_latest_snapshot_id(fs, &prev_snap_id)) { + prev_loaded = amduat_asl_store_index_fs_load_snapshot_replay( + fs->root_path, prev_snap_id, NULL, &replay_state, &prev_anchor); + } + if (!prev_loaded && !amduat_asl_replay_init(&replay_state)) { + free(index_path); + free(log_path); + free(manifest_path); + return AMDUAT_ASL_STORE_ERR_IO; + } } err = amduat_asl_store_index_fs_stream_log_apply(log_path,