Make sure temp file will be cleaned up when base::Move fails
authorCheng Zhao <zcbenz@gmail.com>
Wed, 2 Dec 2015 03:36:29 +0000 (11:36 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Wed, 2 Dec 2015 03:36:29 +0000 (11:36 +0800)
atom/common/asar/scoped_temporary_file.cc

index 14f2ba8..6dd1278 100644 (file)
@@ -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,