diff --git a/state.c b/state.c index 4de1d3a0..0a752438 100644 --- a/state.c +++ b/state.c @@ -2347,9 +2347,6 @@ static void state_read_binary(struct snapraid_state* state, const char* path, ST } disk = tommy_array_get(&disk_mapping, mapping); - /* grow the array */ - tommy_array_grow(&disk->blockarr, blockmax); - v_pos = 0; while (v_pos < blockmax) { uint32_t v_count; @@ -2371,6 +2368,9 @@ static void state_read_binary(struct snapraid_state* state, const char* path, ST switch (c) { case 'o' : + /* grow the array */ + tommy_array_grow(&disk->blockarr, v_pos + v_count); + /* if it's a run of deleted blocks */ while (v_count) { struct snapraid_deleted* deleted;