summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/directoryentry.cpp10
-rw-r--r--src/shared/directoryentry.h2
2 files changed, 7 insertions, 5 deletions
diff --git a/src/shared/directoryentry.cpp b/src/shared/directoryentry.cpp
index 28201a11..d171be38 100644
--- a/src/shared/directoryentry.cpp
+++ b/src/shared/directoryentry.cpp
@@ -1152,7 +1152,8 @@ void DirectoryEntry::addFiles(
DirectoryEntry *DirectoryEntry::getSubDirectory(
std::wstring_view name, bool create, int originID)
{
- auto itor = m_SubDirectoriesLookup.find(ToLowerCopy(name));
+ std::wstring nameLc = ToLowerCopy(name);
+ auto itor = m_SubDirectoriesLookup.find(nameLc);
if (itor != m_SubDirectoriesLookup.end()) {
return itor->second;
@@ -1163,7 +1164,8 @@ DirectoryEntry *DirectoryEntry::getSubDirectory(
std::wstring(name.begin(), name.end()), this, originID,
m_FileRegister, m_OriginConnection);
- addDirectoryToList(entry);
+ addDirectoryToList(entry, std::move(nameLc));
+ // nameLc is moved from this point
return entry;
} else {
@@ -1211,10 +1213,10 @@ void DirectoryEntry::removeDirRecursive()
m_SubDirectoriesLookup.clear();
}
-void DirectoryEntry::addDirectoryToList(DirectoryEntry* e)
+void DirectoryEntry::addDirectoryToList(DirectoryEntry* e, std::wstring nameLc)
{
m_SubDirectories.push_back(e);
- m_SubDirectoriesLookup.emplace(ToLowerCopy(e->getName()), e);
+ m_SubDirectoriesLookup.emplace(std::move(nameLc), e);
}
void DirectoryEntry::removeDirectoryFromList(SubDirectories::iterator itor)
diff --git a/src/shared/directoryentry.h b/src/shared/directoryentry.h
index 1a8a4247..58e70ffa 100644
--- a/src/shared/directoryentry.h
+++ b/src/shared/directoryentry.h
@@ -519,7 +519,7 @@ private:
void removeDirRecursive();
- void addDirectoryToList(DirectoryEntry* e);
+ void addDirectoryToList(DirectoryEntry* e, std::wstring nameLc);
void removeDirectoryFromList(SubDirectories::iterator itor);
void addFileToList(std::wstring fileNameLower, FileEntry::Index index);