From 98dd9fd4344cb5d2df2d0bdfcc7843d03403da1e Mon Sep 17 00:00:00 2001 From: Abbyyan <1678144569@qq.com> Date: Thu, 9 Jul 2020 15:52:59 +0800 Subject: [PATCH] fix add entry --- src/project.cc | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/project.cc b/src/project.cc index a4d6f2ad..ae313ff0 100644 --- a/src/project.cc +++ b/src/project.cc @@ -435,8 +435,9 @@ void Project::loadDirectory(const std::string &root, Project::Folder &folder) { entry.directory = realPath(cmd.Directory); normalizeFolder(entry.directory); doPathMapping(entry.directory); - entry.filename = - realPath(resolveIfRelative(entry.directory, cmd.Filename)); + std::string resolvedPath = + resolveIfRelative(entry.directory, cmd.Filename); + entry.filename = realPath(resolvedPath); normalizeFolder(entry.filename); doPathMapping(entry.filename); @@ -463,10 +464,17 @@ void Project::loadDirectory(const std::string &root, Project::Folder &folder) { if (seen.insert(entry.filename).second) folder.entries.push_back(entry); - if (cmd.Filename != entry.filename && seen.insert(cmd.Filename).second) { - Project::Entry entry_origin = entry; - entry_origin.filename = cmd.Filename; - folder.entries.push_back(entry_origin); + if (resolvedPath != entry.filename && seen.insert(resolvedPath).second) { + Project::Entry newEntry = entry; + newEntry.filename = resolvedPath; + folder.entries.push_back(newEntry); + } + + normalizeFolder(resolvedPath); + if (resolvedPath != entry.filename && seen.insert(resolvedPath).second) { + Project::Entry newEntry = entry; + newEntry.filename = resolvedPath; + folder.entries.push_back(newEntry); } } }