Skip to content

Commit d1c1423

Browse files
authored
Fix crash trying to make a github issue report caused by compiler metadata being missing. (#1138)
1 parent 7f09f3d commit d1c1423

File tree

4 files changed

+191
-173
lines changed

4 files changed

+191
-173
lines changed

include/vcpkg/commands.build.h

+12-4
Original file line numberDiff line numberDiff line change
@@ -266,12 +266,14 @@ namespace vcpkg
266266

267267
struct AbiInfo
268268
{
269+
// These should always be known if an AbiInfo exists
269270
std::unique_ptr<PreBuildInfo> pre_build_info;
270271
Optional<const Toolset&> toolset;
272+
// These might not be known if compiler tracking is turned off or the port is --editable
273+
Optional<const CompilerInfo&> compiler_info;
271274
Optional<const std::string&> triplet_abi;
272275
std::string package_abi;
273276
Optional<Path> abi_tag_file;
274-
Optional<const CompilerInfo&> compiler_info;
275277
std::vector<Path> relative_port_files;
276278
std::vector<std::string> relative_port_hashes;
277279
std::vector<Json::Value> heuristic_resources;
@@ -286,9 +288,15 @@ namespace vcpkg
286288
{
287289
explicit EnvCache(bool compiler_tracking) : m_compiler_tracking(compiler_tracking) { }
288290

289-
const Environment& get_action_env(const VcpkgPaths& paths, const AbiInfo& abi_info);
290-
const std::string& get_triplet_info(const VcpkgPaths& paths, const AbiInfo& abi_info);
291-
const CompilerInfo& get_compiler_info(const VcpkgPaths& paths, const AbiInfo& abi_info);
291+
const Environment& get_action_env(const VcpkgPaths& paths,
292+
const PreBuildInfo& pre_build_info,
293+
const Toolset& toolset);
294+
const std::string& get_triplet_info(const VcpkgPaths& paths,
295+
const PreBuildInfo& pre_build_info,
296+
const Toolset& toolset);
297+
const CompilerInfo& get_compiler_info(const VcpkgPaths& paths,
298+
const PreBuildInfo& pre_build_info,
299+
const Toolset& toolset);
292300

293301
private:
294302
struct TripletMapEntry

include/vcpkg/vcpkgpaths.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,9 @@ namespace vcpkg
142142
// Retrieve a toolset matching the requirements in prebuildinfo
143143
const Toolset& get_toolset(const PreBuildInfo& prebuildinfo) const;
144144

145-
const Environment& get_action_env(const AbiInfo& abi_info) const;
146-
const std::string& get_triplet_info(const AbiInfo& abi_info) const;
147-
const CompilerInfo& get_compiler_info(const AbiInfo& abi_info) const;
145+
const Environment& get_action_env(const PreBuildInfo& pre_build_info, const Toolset& toolset) const;
146+
const std::string& get_triplet_info(const PreBuildInfo& pre_build_info, const Toolset& toolset) const;
147+
const CompilerInfo& get_compiler_info(const PreBuildInfo& pre_build_info, const Toolset& toolset) const;
148148

149149
const FeatureFlagSettings& get_feature_flags() const;
150150

0 commit comments

Comments
 (0)