mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-11 09:35:12 +00:00
PkgC: Make sure we don't use deleted stack objects
The cmPkgConfigEnv* of cmPkgConfigResult would point to a deleted stack copy. This can causes issues when cmPkgConfigResult::Libs() is called and we have to fall back to querying the env.
This commit is contained in:
@@ -227,7 +227,7 @@ void cmPkgConfigResolver::ReplaceSep(std::string& list)
|
||||
}
|
||||
|
||||
cm::optional<cmPkgConfigResult> cmPkgConfigResolver::ResolveStrict(
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv env)
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv& env)
|
||||
{
|
||||
cm::optional<cmPkgConfigResult> result;
|
||||
cmPkgConfigResult config;
|
||||
@@ -289,11 +289,11 @@ cm::optional<cmPkgConfigResult> cmPkgConfigResolver::ResolveStrict(
|
||||
}
|
||||
|
||||
cm::optional<cmPkgConfigResult> cmPkgConfigResolver::ResolvePermissive(
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv env)
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv& env)
|
||||
{
|
||||
cm::optional<cmPkgConfigResult> result;
|
||||
|
||||
cmPkgConfigResult config = ResolveBestEffort(entries, std::move(env));
|
||||
cmPkgConfigResult config = ResolveBestEffort(entries, env);
|
||||
auto const& keys = config.Keywords;
|
||||
|
||||
if (keys.find("Name") == keys.end() ||
|
||||
@@ -307,7 +307,7 @@ cm::optional<cmPkgConfigResult> cmPkgConfigResolver::ResolvePermissive(
|
||||
}
|
||||
|
||||
cmPkgConfigResult cmPkgConfigResolver::ResolveBestEffort(
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv env)
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv& env)
|
||||
{
|
||||
cmPkgConfigResult result;
|
||||
|
||||
|
||||
@@ -99,13 +99,13 @@ class cmPkgConfigResolver
|
||||
|
||||
public:
|
||||
static cm::optional<cmPkgConfigResult> ResolveStrict(
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv env);
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv& env);
|
||||
|
||||
static cm::optional<cmPkgConfigResult> ResolvePermissive(
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv env);
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv& env);
|
||||
|
||||
static cmPkgConfigResult ResolveBestEffort(
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv env);
|
||||
std::vector<cmPkgConfigEntry> const& entries, cmPkgConfigEnv& env);
|
||||
|
||||
static cmPkgConfigVersionReq ParseVersion(std::string const& version);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user