r221804 - Use the return of readBytes to find out if we are at the end of the stream.
Jordan Rose
jordan_rose at apple.com
Wed Nov 12 15:59:00 PST 2014
I'm just going to write a gtest unit test for this. That's easy enough.
Jordan
> On Nov 12, 2014, at 15:58 , Rafael Avila de Espindola <rafael.espindola at gmail.com> wrote:
>
> Would it reproduce with opt and an empty file?
>
> Sent from my iPhone
>
>> On Nov 12, 2014, at 18:54, Jordan Rose <jordan_rose at apple.com> wrote:
>>
>>
>>> On Nov 12, 2014, at 15:38, Rafael Avila de Espindola <rafael.espindola at gmail.com> wrote:
>>>
>>>
>>>
>>> Sent from my iPhone
>>>
>>>> On Nov 12, 2014, at 18:22, Jordan Rose <jordan_rose at apple.com> wrote:
>>>>
>>>> Looks like it's just this:
>>>>
>>>> diff --git a/include/llvm/Bitcode/BitstreamReader.h b/include/llvm/Bitcode/BitstreamReader.h
>>>> index 6b9c858..41e50e1 100644
>>>> --- a/include/llvm/Bitcode/BitstreamReader.h
>>>> +++ b/include/llvm/Bitcode/BitstreamReader.h
>>>> @@ -227,7 +227,7 @@ public:
>>>> bool AtEndOfStream() {
>>>> if (BitsInCurWord != 0)
>>>> return false;
>>>> - if (Size == NextChar)
>>>> + if (Size != 0 && Size == NextChar)
>>>> return true;
>>>> fillCurWord();
>>>> return BitsInCurWord == 0;
>>>>
>>>> i.e. you forgot about the fact that we /start/ with both Size and NextChar equal to 0. Does this look like the right fix to you?
>>>
>>>
>>> Oh, so a call at the very start would fail. LGTM
>>
>> Yup, I don't have a test case in LLVM's code, but Swift is checking explicitly for an empty file. Took me a while to track that down.
>>
>> Thanks, I'll commit.
>> Jordan
>>
More information about the llvm-commits
mailing list