mirror of
https://git.mirrors.martin98.com/https://github.com/gulrak/filesystem
synced 2025-07-24 07:54:25 +08:00
directory_iterator on Windows should free resources when reaching end(), #8
This commit is contained in:
parent
4966d1b822
commit
b98a74ab1d
@ -4327,6 +4327,8 @@ public:
|
|||||||
copyToDirEntry(ec);
|
copyToDirEntry(ec);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
FindClose(_dirHandle);
|
||||||
|
_dirHandle = INVALID_HANDLE_VALUE;
|
||||||
_current = filesystem::path();
|
_current = filesystem::path();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1039,6 +1039,18 @@ TEST_CASE("30.10.13 class directory_iterator", "[filesystem][directory_iterator]
|
|||||||
CHECK(iter->file_size() == 1234);
|
CHECK(iter->file_size() == 1234);
|
||||||
CHECK(++iter == fs::directory_iterator());
|
CHECK(++iter == fs::directory_iterator());
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
// Issue #8: check if resources are freed when iterator reaches end()
|
||||||
|
TemporaryDirectory t(TempOpt::change_path);
|
||||||
|
auto p = fs::path("test/");
|
||||||
|
fs::create_directory(p);
|
||||||
|
auto iter = fs::directory_iterator(p);
|
||||||
|
while (iter != fs::directory_iterator()) {
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
CHECK(fs::remove_all(p) == 1);
|
||||||
|
CHECK_NOTHROW(fs::create_directory(p));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("30.10.14 class recursive_directory_iterator", "[filesystem][recursive_directory_iterator]")
|
TEST_CASE("30.10.14 class recursive_directory_iterator", "[filesystem][recursive_directory_iterator]")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user