Skip to content

Commit

Permalink
fix CopyFile status checks
Browse files Browse the repository at this point in the history
Summary:
copied from internal diff D6156261
Closes facebook#3124

Differential Revision: D6230167

Pulled By: ajkr

fbshipit-source-id: 17926bb1152d607556364e3aacfec0ef3c115748
  • Loading branch information
ajkr authored and facebook-github-bot committed Nov 3, 2017
1 parent d956169 commit cfb120f
Showing 1 changed file with 21 additions and 21 deletions.
42 changes: 21 additions & 21 deletions util/file_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,39 +24,39 @@ Status CopyFile(Env* env, const std::string& source,

{
unique_ptr<SequentialFile> srcfile;
s = env->NewSequentialFile(source, &srcfile, soptions);
unique_ptr<WritableFile> destfile;
if (s.ok()) {
s = env->NewSequentialFile(source, &srcfile, soptions);
if (!s.ok()) {
return s;
}
unique_ptr<WritableFile> destfile;
s = env->NewWritableFile(destination, &destfile, soptions);
} else {
return s;
}
if (!s.ok()) {
return s;
}

if (size == 0) {
// default argument means copy everything
if (s.ok()) {
if (size == 0) {
// default argument means copy everything
s = env->GetFileSize(source, &size);
} else {
return s;
if (!s.ok()) {
return s;
}
}
}
src_reader.reset(new SequentialFileReader(std::move(srcfile)));
dest_writer.reset(new WritableFileWriter(std::move(destfile), soptions));
src_reader.reset(new SequentialFileReader(std::move(srcfile)));
dest_writer.reset(new WritableFileWriter(std::move(destfile), soptions));
}

char buffer[4096];
Slice slice;
while (size > 0) {
size_t bytes_to_read = std::min(sizeof(buffer), static_cast<size_t>(size));
if (s.ok()) {
s = src_reader->Read(bytes_to_read, &slice, buffer);
s = src_reader->Read(bytes_to_read, &slice, buffer);
if (!s.ok()) {
return s;
}
if (s.ok()) {
if (slice.size() == 0) {
return Status::Corruption("file too small");
}
s = dest_writer->Append(slice);
if (slice.size() == 0) {
return Status::Corruption("file too small");
}
s = dest_writer->Append(slice);
if (!s.ok()) {
return s;
}
Expand Down

0 comments on commit cfb120f

Please sign in to comment.