core: region_processor: ignore empty region files

Minecraft generates empty region files in some cases. Just ignore these
files instead of printing an error message for each.
This commit is contained in:
Matthias Schiffer 2024-06-14 16:15:56 +02:00
parent 66189d279c
commit e74e7be686
Signed by: neocturne
GPG key ID: 16EF3F64CB201D9C
2 changed files with 18 additions and 5 deletions

View file

@ -8,6 +8,10 @@
The calculation of the number of skipped regions could underflow when more invalid than valid
regions were encountered.
- Ignore empty region files instead of treating them as invalid
Minecraft generates empty region files in some cases. Just ignore them instead of printing an
error message every time.
## [2.1.0] - 2024-01-27

View file

@ -337,11 +337,20 @@ impl<'a> RegionProcessor<'a> {
})?
.filter_map(|entry| entry.ok())
.filter(|entry| {
(|| {
// We are only interested in regular files
matches!(
entry.file_type().map(|file_type| file_type.is_file()),
Ok(true)
)
let file_type = entry.file_type().ok()?;
if !file_type.is_file() {
return None;
}
let metadata = entry.metadata().ok()?;
if metadata.len() == 0 {
return None;
}
Some(())
})()
.is_some()
})
.filter_map(|entry| parse_region_filename(&entry.file_name()))
.collect())