summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2017-09-23 21:13:50 +0800
committerJohn Hodge <tpg@ucc.asn.au>2017-09-23 21:13:50 +0800
commitfdf6693609e532c46a70a4da7f6e2ff8a55fbdb0 (patch)
tree45266103a3a1a4da50627b196226ad288906df60
parentae47593d02752ab6d7a6c768cc168772b5244e22 (diff)
downloadmrust-fdf6693609e532c46a70a4da7f6e2ff8a55fbdb0.tar.gz
minicargo - Some defensive handling of bad manifests
-rw-r--r--tools/minicargo/manifest.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/tools/minicargo/manifest.cpp b/tools/minicargo/manifest.cpp
index 1e2b8497..ef5beb24 100644
--- a/tools/minicargo/manifest.cpp
+++ b/tools/minicargo/manifest.cpp
@@ -309,6 +309,11 @@ PackageManifest PackageManifest::load_from_toml(const ::std::string& path)
}
}
+ if( rv.m_name == "" )
+ {
+ throw ::std::runtime_error(format("Manifest file ",path," doesn't specify a package name"));
+ }
+
// Default targets
// - If there's no library section, but src/lib.rs exists, add one
if( ! ::std::any_of(rv.m_targets.begin(), rv.m_targets.end(), [](const auto& x){ return x.m_type == PackageTarget::Type::Lib; }) )
@@ -507,7 +512,7 @@ const PackageTarget& PackageManifest::get_library() const
auto it = ::std::find_if(m_targets.begin(), m_targets.end(), [](const auto& x) { return x.m_type == PackageTarget::Type::Lib; });
if (it == m_targets.end())
{
- throw ::std::runtime_error(::format("Package ", m_name, " doesn't have a library"));
+ throw ::std::runtime_error(::format("Package '", m_name, "' doesn't have a library"));
}
return *it;
}