Skip to content

Commit a6fe345

Browse files
committed
[Path] Set FD to -1 in moved-from TempFile
When moving a temp file, explicitly set the file descriptor to -1 so we can never accidentally close the moved-from TempFile. Differential revision: https://reviews.llvm.org/D63087 llvm-svn: 363083
1 parent 08200d6 commit a6fe345

File tree

2 files changed

+3
-0
lines changed

2 files changed

+3
-0
lines changed

llvm/lib/Support/Path.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,6 +1125,7 @@ TempFile &TempFile::operator=(TempFile &&Other) {
11251125
TmpName = std::move(Other.TmpName);
11261126
FD = Other.FD;
11271127
Other.Done = true;
1128+
Other.FD = -1;
11281129
return *this;
11291130
}
11301131

llvm/unittests/Support/Path.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,7 @@ TEST_F(FileSystemTest, TempFileKeepDiscard) {
578578
auto TempFileOrError = fs::TempFile::create(TestDirectory + "/test-%%%%");
579579
ASSERT_TRUE((bool)TempFileOrError);
580580
fs::TempFile File = std::move(*TempFileOrError);
581+
ASSERT_EQ(-1, TempFileOrError->FD);
581582
ASSERT_FALSE((bool)File.keep(TestDirectory + "/keep"));
582583
ASSERT_FALSE((bool)File.discard());
583584
ASSERT_TRUE(fs::exists(TestDirectory + "/keep"));
@@ -589,6 +590,7 @@ TEST_F(FileSystemTest, TempFileDiscardDiscard) {
589590
auto TempFileOrError = fs::TempFile::create(TestDirectory + "/test-%%%%");
590591
ASSERT_TRUE((bool)TempFileOrError);
591592
fs::TempFile File = std::move(*TempFileOrError);
593+
ASSERT_EQ(-1, TempFileOrError->FD);
592594
ASSERT_FALSE((bool)File.discard());
593595
ASSERT_FALSE((bool)File.discard());
594596
ASSERT_FALSE(fs::exists(TestDirectory + "/keep"));

0 commit comments

Comments
 (0)