Fix undefined behavior (signed integer overflow) when Clang parses a hexfloat with an enormous exponent. Caught by an existing unit test + -ftrapv.
llvm-svn: 162505
This commit is contained in:
parent
281d7998b8
commit
156d92037a
|
@ -196,8 +196,10 @@ totalExponent(StringRef::iterator p, StringRef::iterator end,
|
|||
assert(value < 10U && "Invalid character in exponent");
|
||||
|
||||
unsignedExponent = unsignedExponent * 10 + value;
|
||||
if (unsignedExponent > 32767)
|
||||
if (unsignedExponent > 32767) {
|
||||
overflow = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (exponentAdjustment > 32767 || exponentAdjustment < -32768)
|
||||
|
|
Loading…
Reference in New Issue