From 6fccd83facd35f0600362e8980c6f309f151e89b Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 9 Sep 2007 10:05:16 +0000 Subject: If sys::copy_file fails, try and remove the target file before throwing an exception git-svn-id: svn://localhost/ardour2/trunk@2435 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/pbd/filesystem.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'libs/pbd') diff --git a/libs/pbd/filesystem.cc b/libs/pbd/filesystem.cc index f527c9a473..84d18cfcd2 100644 --- a/libs/pbd/filesystem.cc +++ b/libs/pbd/filesystem.cc @@ -149,11 +149,10 @@ rename (const path & from_path, const path & to_path) } } +// XXX character encoding. void copy_file(const path & from_path, const path & to_path) { - // this implementation could use mucho memory - // for big files. std::ifstream in(from_path.to_string().c_str()); std::ofstream out(to_path.to_string().c_str()); @@ -165,9 +164,9 @@ copy_file(const path & from_path, const path & to_path) out << in.rdbuf(); if (!in || !out) { + remove (to_path); throw filesystem_error(string_compose(_("Could not copy existing file %1 to %2"), from_path.to_string(), to_path.to_string())); - remove (to_path); } } -- cgit v1.2.3