quantize: prevent input/output file collision (#18451)

Check if input and output files are the same before quantizing to prevent
file corruption when mmap reads from a file being written to.

Fixes #12753
This commit is contained in:
Anri Lombard 2025-12-31 17:29:03 +02:00 committed by GitHub
parent 0db8109849
commit 33ded988ba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 0 deletions

View File

@ -12,6 +12,7 @@
#include <cmath>
#include <cctype>
#include <algorithm>
#include <filesystem>
struct quant_option {
std::string name;
@ -643,6 +644,11 @@ int main(int argc, char ** argv) {
return 1;
}
if (std::error_code ec; std::filesystem::equivalent(fname_inp, fname_out, ec)) {
fprintf(stderr, "%s: error: input and output files are the same: '%s'\n", __func__, fname_inp.c_str());
return 1;
}
print_build_info();
fprintf(stderr, "%s: quantizing '%s' to '%s' as %s", __func__, fname_inp.c_str(), fname_out.c_str(), ftype_str.c_str());