[lld] r265477 - [lld][MachO] Check Expected<T> for error prior to destruction.
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 6 10:25:32 PDT 2016
>
> +
>
> + // Transfer ownership to "out" File parameter.
>
> + std::unique_ptr<lld::File> f = std::move(*fileOrError);
>
> + file = f.release();
>
>
> Aside, this ^ seems like an odd sequence. Are those two lines equivalent
> to:
>
file = fileOrError->release();
Why yes. Yes they are. Fixed in r265566. I'll look at changing that
out-parameter to a unique_ptr in a subsequent patch too.
- Lang.
On Wed, Apr 6, 2016 at 8:29 AM, David Blaikie <dblaikie at gmail.com> wrote:
>
>
> On Tue, Apr 5, 2016 at 3:06 PM, Lang Hames via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: lhames
>> Date: Tue Apr 5 17:06:48 2016
>> New Revision: 265477
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=265477&view=rev
>> Log:
>> [lld][MachO] Check Expected<T> for error prior to destruction.
>>
>> This should fix the failures on the LLD bots caused by r265446.
>>
>>
>> Modified:
>> lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
>>
>> Modified: lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp?rev=265477&r1=265476&r2=265477&view=diff
>>
>> ==============================================================================
>> --- lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
>> (original)
>> +++ lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp Tue Apr
>> 5 17:06:48 2016
>> @@ -767,22 +767,9 @@ bool MachOYamlIOTaggedDocumentHandler::h
>> 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::h
>> 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();
>>
>
> Aside, this ^ seems like an odd sequence. Are those two lines equivalent
> to:
>
> file = fileOrError->release();
>
>
>> + return true;
>> }
>>
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160406/9be19676/attachment.html>
More information about the llvm-commits
mailing list