|
|
@ -93,13 +93,15 @@ bool RegionMap::load(FILESYSTEM* _fs, const char* path) { |
|
|
while (num_regions < MAX_REGION_ENTRIES) { |
|
|
while (num_regions < MAX_REGION_ENTRIES) { |
|
|
auto r = ®ions[num_regions]; |
|
|
auto r = ®ions[num_regions]; |
|
|
|
|
|
|
|
|
success = file.read((uint8_t *) &r->id, sizeof(r->id)) == sizeof(r->id); |
|
|
int n = file.read((uint8_t *) &r->id, sizeof(r->id)); |
|
|
|
|
|
if (n == 0) break; // clean EOF
|
|
|
|
|
|
success = (n == sizeof(r->id)); |
|
|
success = success && file.read((uint8_t *) &r->parent, sizeof(r->parent)) == sizeof(r->parent); |
|
|
success = success && file.read((uint8_t *) &r->parent, sizeof(r->parent)) == sizeof(r->parent); |
|
|
success = success && file.read((uint8_t *) r->name, sizeof(r->name)) == sizeof(r->name); |
|
|
success = success && file.read((uint8_t *) r->name, sizeof(r->name)) == sizeof(r->name); |
|
|
success = success && file.read((uint8_t *) &r->flags, sizeof(r->flags)) == sizeof(r->flags); |
|
|
success = success && file.read((uint8_t *) &r->flags, sizeof(r->flags)) == sizeof(r->flags); |
|
|
success = success && file.read(pad, sizeof(pad)) == sizeof(pad); |
|
|
success = success && file.read(pad, sizeof(pad)) == sizeof(pad); |
|
|
|
|
|
|
|
|
if (!success) break; // EOF
|
|
|
if (!success) break; // partial read or corruption
|
|
|
|
|
|
|
|
|
if (r->id >= next_id) { // make sure next_id is valid
|
|
|
if (r->id >= next_id) { // make sure next_id is valid
|
|
|
next_id = r->id + 1; |
|
|
next_id = r->id + 1; |
|
|
@ -108,7 +110,7 @@ bool RegionMap::load(FILESYSTEM* _fs, const char* path) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
file.close(); |
|
|
file.close(); |
|
|
return true; |
|
|
return success; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return false; // failed
|
|
|
return false; // failed
|
|
|
|