1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-24 22:11:15 +02:00
This commit is contained in:
Brian McKenna 2025-06-24 06:07:16 +10:00 committed by GitHub
commit fbee3265b7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 10 additions and 10 deletions

View file

@ -142,14 +142,14 @@ static void parseContents(CreateRegularFileSink & sink, Source & source)
sink.preallocateContents(size);
uint64_t left = size;
std::array<char, 65536> buf;
auto buf = std::make_unique<std::array<char, 65536>>();
while (left) {
checkInterrupt();
auto n = buf.size();
auto n = buf->size();
if ((uint64_t)n > left) n = left;
source(buf.data(), n);
sink({buf.data(), n});
source(buf->data(), n);
sink({buf->data(), n});
left -= n;
}

View file

@ -340,13 +340,13 @@ void writeFile(const Path & path, Source & source, mode_t mode, bool sync)
if (!fd)
throw SysError("opening file '%1%'", path);
std::array<char, 64 * 1024> buf;
auto buf = std::make_unique<std::array<char, 64 * 1024>>();
try {
while (true) {
try {
auto n = source.read(buf.data(), buf.size());
writeFull(fd.get(), {buf.data(), n});
auto n = source.read(buf->data(), buf->size());
writeFull(fd.get(), {buf->data(), n});
} catch (EndOfFile &) { break; }
}
} catch (Error & e) {

View file

@ -64,10 +64,10 @@ void PosixSourceAccessor::readFile(
off_t left = st.st_size;
std::array<unsigned char, 64 * 1024> buf;
auto buf = std::make_unique<std::array<unsigned char, 64 * 1024>>();
while (left) {
checkInterrupt();
ssize_t rd = read(fromDescriptorReadOnly(fd.get()), buf.data(), (size_t) std::min(left, (off_t) buf.size()));
ssize_t rd = read(fromDescriptorReadOnly(fd.get()), buf->data(), (size_t) std::min(left, (off_t) buf->size()));
if (rd == -1) {
if (errno != EINTR)
throw SysError("reading from file '%s'", showPath(path));
@ -76,7 +76,7 @@ void PosixSourceAccessor::readFile(
throw SysError("unexpected end-of-file reading '%s'", showPath(path));
else {
assert(rd <= left);
sink({(char *) buf.data(), (size_t) rd});
sink({(char *) buf->data(), (size_t) rd});
left -= rd;
}
}