X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fscp_dcp_job.cc;h=779c8dd44b2abf131ea8490c73c4f17f8b155ef1;hb=2d5b8cdde08044d323aa7193dfac6c9f8bca7131;hp=8cde44f0258a2d65ad8a4a44fa437b653f216c2d;hpb=50cb31af16240b248700dab1484d7f07656c66df;p=dcpomatic.git diff --git a/src/lib/scp_dcp_job.cc b/src/lib/scp_dcp_job.cc index 8cde44f02..779c8dd44 100644 --- a/src/lib/scp_dcp_job.cc +++ b/src/lib/scp_dcp_job.cc @@ -150,7 +150,7 @@ SCPDCPJob::run () throw NetworkError (String::compose (_("Could not create remote directory %1 (%2)"), _film->dcp_name(), ssh_get_error (ss.session))); } - string const dcp_dir = _film->dir (_film->dcp_name()); + boost::filesystem::path const dcp_dir = _film->dir (_film->dcp_name()); boost::uintmax_t bytes_to_transfer = 0; for (boost::filesystem::directory_iterator i = boost::filesystem::directory_iterator (dcp_dir); i != boost::filesystem::directory_iterator(); ++i) { @@ -179,11 +179,13 @@ SCPDCPJob::run () int const t = min (to_do, buffer_size); size_t const read = fread (buffer, 1, t, f); if (read != size_t (t)) { + fclose (f); throw ReadFileError (boost::filesystem::path (*i).string()); } r = ssh_scp_write (sc.scp, buffer, t); if (r != SSH_OK) { + fclose (f); throw NetworkError (String::compose (_("Could not write to remote file (%1)"), ssh_get_error (ss.session))); } to_do -= t;