Fix crash when an invalid URI is parsed and error handling is attempted

When you pass in a payload with an invalid URI in a build with assertions enabled, it will crash.
Consuming the error from the failed URI parse prevents the error.

The crash is caused by the [llvm::expected](https://llvm.org/doxygen/classllvm_1_1Expected.html) having protection around trying to deconstruct without consuming the error first.

Reviewed By: kadircet

Differential Revision: https://reviews.llvm.org/D99872
This commit is contained in:
crr0004 2021-04-07 12:31:41 +02:00 committed by Kadir Cetinkaya
parent f37ea62e57
commit 43637c0dfe
No known key found for this signature in database
GPG Key ID: E39E36B8D2057ED6
1 changed files with 1 additions and 0 deletions

View File

@ -70,6 +70,7 @@ bool fromJSON(const llvm::json::Value &E, URIForFile &R, llvm::json::Path P) {
if (auto S = E.getAsString()) {
auto Parsed = URI::parse(*S);
if (!Parsed) {
consumeError(Parsed.takeError());
P.report("failed to parse URI");
return false;
}