[APFloat] Swap an early out check so we do not dereference str.end().
authorMichael Gottesman <mgottesman@apple.com>
Tue, 2 Jul 2013 15:50:05 +0000 (15:50 +0000)
committerMichael Gottesman <mgottesman@apple.com>
Tue, 2 Jul 2013 15:50:05 +0000 (15:50 +0000)
Originally if D.firstSigDigit == str.end(), we will have already dereferenced
D.firstSigDigit in the first predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185437 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/APFloat.cpp

index ae4a101febab4ab02a828e2031f2b412969bfb79..8713ede6a17c4d12190b35f8c7579c6d4106b5ac 100644 (file)
@@ -2488,7 +2488,7 @@ APFloat::convertFromDecimalString(StringRef str, roundingMode rounding_mode)
   // D->firstSigDigit equals str.end(), every digit must be a zero and there can
   // be at most one dot. On the other hand, if we have a zero with a non-zero
   // exponent, then we know that D.firstSigDigit will be non-numeric.
-  if (decDigitValue(*D.firstSigDigit) >= 10U || D.firstSigDigit == str.end()) {
+  if (D.firstSigDigit == str.end() || decDigitValue(*D.firstSigDigit) >= 10U) {
     category = fcZero;
     fs = opOK;