libstdc++: Simplify resource management in directory iterators
authorJonathan Wakely <jwakely@redhat.com>
Tue, 8 Feb 2022 15:57:58 +0000 (15:57 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Tue, 8 Feb 2022 21:04:14 +0000 (21:04 +0000)
commit1ef6085f09b50e0aa3e5a5d15ebf8752e8aa8a72
tree253855afea390880347b9d54c264589da0e6fced
parentd0d4601ccde3c4849f6e7244035f1a899d608cb7
libstdc++: Simplify resource management in directory iterators

This replaces the _Dir constructor that takes ownership of an existing
DIR* resource with one that takes a _Dir_base rvalue instead. This means
a raw DIR* is never passed around, but is always owned by a _Dir_base
object.

libstdc++-v3/ChangeLog:

* src/c++17/fs_dir.cc (_Dir(DIR*, const path&)): Change first
parameter to _Dir_base&&.
* src/filesystem/dir-common.h (_Dir_base(DIR*)): Remove.
* src/filesystem/dir.cc (_Dir(DIR*, const path&)): Change first
parameter to _Dir_base&&.
libstdc++-v3/src/c++17/fs_dir.cc
libstdc++-v3/src/filesystem/dir-common.h
libstdc++-v3/src/filesystem/dir.cc