Make sure temp file will be cleaned up when base::Move fails

This commit is contained in:
Cheng Zhao 2015-12-02 11:36:29 +08:00
Родитель c3645e3f95
Коммит c493bec089
1 изменённых файлов: 11 добавлений и 8 удалений

Просмотреть файл

@ -33,17 +33,20 @@ bool ScopedTemporaryFile::Init(const base::FilePath::StringType& ext) {
return true;
base::ThreadRestrictions::ScopedAllowIO allow_io;
base::FilePath temp_path;
if (!base::CreateTemporaryFile(&temp_path))
if (!base::CreateTemporaryFile(&path_))
return false;
if (ext.empty())
return true;
#if defined(OS_WIN)
// Keep the original extension.
path_ = temp_path.AddExtension(ext);
return base::Move(temp_path, path_);
if (!ext.empty()) {
base::FilePath new_path = path_.AddExtension(ext);
if (!base::Move(path_, new_path))
return false;
path_ = new_path;
}
#endif
return true;
}
bool ScopedTemporaryFile::InitFromFile(base::File* src,