diff options
| author | Lang Hames <lhames@gmail.com> | 2016-04-05 22:06:48 +0000 |
|---|---|---|
| committer | Lang Hames <lhames@gmail.com> | 2016-04-05 22:06:48 +0000 |
| commit | 24f5a3eb039a9feb84a9b02737b6c2172d2187e8 (patch) | |
| tree | 360ac0dd6e37650c320fb5eae32a5e51c784b7eb | |
| parent | c8b1be0c71138fe43645112a17ae17330fb7fbf9 (diff) | |
| download | bcm5719-llvm-24f5a3eb039a9feb84a9b02737b6c2172d2187e8.tar.gz bcm5719-llvm-24f5a3eb039a9feb84a9b02737b6c2172d2187e8.zip | |
[lld][MachO] Check Expected<T> for error prior to destruction.
This should fix the failures on the LLD bots caused by r265446.
llvm-svn: 265477
| -rw-r--r-- | lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp b/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp index 0b1e91927a8..276857016ba 100644 --- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp +++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp @@ -767,22 +767,9 @@ bool MachOYamlIOTaggedDocumentHandler::handledDocTag(llvm::yaml::IO &io, MappingTraits<NormalizedFile>::mapping(io, nf); // Step 2: parse normalized mach-o struct into atoms. auto fileOrError = normalizedToAtoms(nf, info->_path, true); - if (nf.arch != _arch) { - io.setError(Twine("file is wrong architecture. Expected (" - + MachOLinkingContext::nameFromArch(_arch) - + ") found (" - + MachOLinkingContext::nameFromArch(nf.arch) - + ")")); - return false; - } - info->_normalizeMachOFile = nullptr; - if (fileOrError) { - // Transfer ownership to "out" File parameter. - std::unique_ptr<lld::File> f = std::move(fileOrError.get()); - file = f.release(); - return true; - } else { + // Check that we parsed successfully. + if (!fileOrError) { std::string buffer; llvm::raw_string_ostream stream(buffer); handleAllErrors(fileOrError.takeError(), @@ -793,6 +780,21 @@ bool MachOYamlIOTaggedDocumentHandler::handledDocTag(llvm::yaml::IO &io, io.setError(stream.str()); return false; } + + if (nf.arch != _arch) { + io.setError(Twine("file is wrong architecture. Expected (" + + MachOLinkingContext::nameFromArch(_arch) + + ") found (" + + MachOLinkingContext::nameFromArch(nf.arch) + + ")")); + return false; + } + info->_normalizeMachOFile = nullptr; + + // Transfer ownership to "out" File parameter. + std::unique_ptr<lld::File> f = std::move(*fileOrError); + file = f.release(); + return true; } |

