mirror of
https://github.com/expo/bsdiff.git
synced 2026-11-14 17:49:03 -10:00
Merge "Fix infinite loop when using extents." am: db7f0c8
am: 7d0541e
* commit '7d0541ea51d2a7f193935d750540971ffea4886d':
Fix infinite loop when using extents.
Change-Id: Ide78dbfd69535124cdfeb56feda40fcd93dc0899
This commit is contained in:
commit
424f91cc52
2 files changed
+4
-1
No files matched your search
+1
-1
@@ -112,7 +112,7 @@ bool WriteAll(const std::unique_ptr<FileInterface>& file,
|
||||
size_t size) {
|
||||
size_t offset = 0, written;
|
||||
while (offset < size) {
|
||||
if (!file->Write(data + offset, size - offset, &written))
|
||||
if (!file->Write(data + offset, size - offset, &written) || written == 0)
|
||||
return false;
|
||||
offset += written;
|
||||
}
|
||||
|
||||
@@ -35,6 +35,9 @@ bool MemoryFile::Seek(off_t pos) {
|
||||
bool MemoryFile::Close() {
|
||||
if (!WriteAll(file_, buffer_.data(), buffer_.size()))
|
||||
return false;
|
||||
// Prevent writing |buffer_| to |file_| again if Close() is called more than
|
||||
// once.
|
||||
buffer_.clear();
|
||||
return file_->Close();
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user