[llvm-commits] [llvm] r165038 - /llvm/trunk/lib/Support/StringRef.cpp
David Blaikie
dblaikie at gmail.com
Wed Oct 3 13:31:12 PDT 2012
On Wed, Oct 3, 2012 at 11:21 AM, Nick Kledzik <kledzik at apple.com> wrote:
>
> On Oct 2, 2012, at 11:45 PM, David Blaikie wrote:
>
>> On Tue, Oct 2, 2012 at 1:01 PM, Nick Kledzik <kledzik at apple.com> wrote:
>>> Author: kledzik
>>> Date: Tue Oct 2 15:01:48 2012
>>> New Revision: 165038
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=165038&view=rev
>>> Log:
>>> Improve overflow detection in StringRef::getAsUnsignedInteger().
>>
>> Are there existing unit tests you could update to validate this change?
> Good point. I looked over the existing test cases and they just check that valid strings are properly parsed.
> So I added a test case which passes a list of malformed strings to getAsUnsignedInteger() and
> verifies that they are rejected. I also verified that the new test case passes with my previous commit
> and fails without it.
>
> Committed revision 165136.
Looks great - thanks!
>
> -Nick
>
>
>>
>>>
>>> Modified:
>>> llvm/trunk/lib/Support/StringRef.cpp
>>>
>>> Modified: llvm/trunk/lib/Support/StringRef.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/StringRef.cpp?rev=165038&r1=165037&r2=165038&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/lib/Support/StringRef.cpp (original)
>>> +++ llvm/trunk/lib/Support/StringRef.cpp Tue Oct 2 15:01:48 2012
>>> @@ -350,8 +350,8 @@
>>> unsigned long long PrevResult = Result;
>>> Result = Result*Radix+CharVal;
>>>
>>> - // Check for overflow.
>>> - if (Result < PrevResult)
>>> + // Check for overflow by shifting back and seeing if bits were lost.
>>> + if (Result/Radix < PrevResult)
>>> return true;
>>>
>>> Str = Str.substr(1);
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list