* src/filesystem/path.cc (path::compare): Do not copy strings.
From-SVN: r222704
This commit is contained in:
parent
bf53e6a9dd
commit
4ad376273d
2 changed files with 10 additions and 2 deletions
|
@ -1,5 +1,7 @@
|
|||
2015-05-01 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* src/filesystem/path.cc (path::compare): Do not copy strings.
|
||||
|
||||
* acinclude.m4 (GLIBCXX_ENABLE_FILESYSTEM_TS): Disable when <dirent.h>
|
||||
is not available.
|
||||
(GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for fchmodat.
|
||||
|
|
|
@ -107,17 +107,23 @@ namespace
|
|||
int
|
||||
path::compare(const path& p) const noexcept
|
||||
{
|
||||
struct CmptRef
|
||||
{
|
||||
const path* ptr;
|
||||
const string_type& native() const noexcept { return ptr->native(); }
|
||||
};
|
||||
|
||||
if (_M_type == _Type::_Multi && p._M_type == _Type::_Multi)
|
||||
return do_compare(_M_cmpts.begin(), _M_cmpts.end(),
|
||||
p._M_cmpts.begin(), p._M_cmpts.end());
|
||||
else if (_M_type == _Type::_Multi)
|
||||
{
|
||||
_Cmpt c[1] = { { p._M_pathname, p._M_type, 0 } };
|
||||
CmptRef c[1] = { { &p } };
|
||||
return do_compare(_M_cmpts.begin(), _M_cmpts.end(), c, c+1);
|
||||
}
|
||||
else if (p._M_type == _Type::_Multi)
|
||||
{
|
||||
_Cmpt c[1] = { { _M_pathname, _M_type, 0 } };
|
||||
CmptRef c[1] = { { this } };
|
||||
return do_compare(c, c+1, p._M_cmpts.begin(), p._M_cmpts.end());
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Add table
Reference in a new issue