Fix error handling when instantiating `std::regex`
This commit is contained in:
parent
17c5f50440
commit
d006c9ce4f
|
@ -273,7 +273,11 @@ void getPackages(const Params ¶ms, ResponseHandler &&handler)
|
||||||
break;
|
break;
|
||||||
case Mode::Regex:
|
case Mode::Regex:
|
||||||
// assume names are regexes
|
// assume names are regexes
|
||||||
pushPackages(params.setup.config.findPackages(std::regex(name.data(), name.size())));
|
try {
|
||||||
|
pushPackages(params.setup.config.findPackages(std::regex(name.data(), name.size())));
|
||||||
|
} catch (const std::regex_error &e) {
|
||||||
|
throw BadRequest(argsToString("regex is invalid: ", e.what()));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case Mode::Provides:
|
case Mode::Provides:
|
||||||
case Mode::Depends:
|
case Mode::Depends:
|
||||||
|
|
|
@ -112,7 +112,12 @@ int main(int argc, const char *argv[])
|
||||||
const auto negate = negateArg.isPresent();
|
const auto negate = negateArg.isPresent();
|
||||||
auto regex = std::optional<std::regex>();
|
auto regex = std::optional<std::regex>();
|
||||||
if (regexArg.isPresent()) {
|
if (regexArg.isPresent()) {
|
||||||
regex = std::regex(searchTerm, std::regex::egrep);
|
try {
|
||||||
|
regex = std::regex(searchTerm, std::regex::egrep);
|
||||||
|
} catch (const std::regex_error &e) {
|
||||||
|
cerr << "Specified regex is invalid: " << e.what() << endl;
|
||||||
|
exit(3);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (const Database &db : cfg.databases) {
|
for (const Database &db : cfg.databases) {
|
||||||
for (const auto &pkg : db.packages) {
|
for (const auto &pkg : db.packages) {
|
||||||
|
|
Loading…
Reference in New Issue