[llvm] r185397 - [APFloat] Ensure that we can properly parse strings that do not have null terminators.
Eli Friedman
eli.friedman at gmail.com
Mon Jul 1 19:37:03 PDT 2013
On Mon, Jul 1, 2013 at 4:54 PM, Michael Gottesman <mgottesman at apple.com>wrote:
> Author: mgottesman
> Date: Mon Jul 1 18:54:08 2013
> New Revision: 185397
>
> URL: http://llvm.org/viewvc/llvm-project?rev=185397&view=rev
> Log:
> [APFloat] Ensure that we can properly parse strings that do not have null
> terminators.
>
> rdar://14323230
>
> Modified:
> llvm/trunk/lib/Support/APFloat.cpp
> llvm/trunk/unittests/ADT/APFloatTest.cpp
>
> Modified: llvm/trunk/lib/Support/APFloat.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APFloat.cpp?rev=185397&r1=185396&r2=185397&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Support/APFloat.cpp (original)
> +++ llvm/trunk/lib/Support/APFloat.cpp Mon Jul 1 18:54:08 2013
> @@ -2481,7 +2481,14 @@ APFloat::convertFromDecimalString(String
> 42039/12655 < L < 28738/8651 [ numerator <= 65536 ]
> */
>
> - if (decDigitValue(*D.firstSigDigit) >= 10U) {
> + // Test if we have a zero number allowing for strings with no null
> terminators
> + // and zero decimals with non-zero exponents.
> + //
> + // We computed firstSigDigit by ignoring all zeros and dots. Thus if
> + // 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()) {
> category = fcZero;
> fs = opOK;
>
>
Aren't these checks in the wrong order? It would be nice to avoid
dereferencing str.end().
-Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130701/6d5bd88e/attachment.html>
More information about the llvm-commits
mailing list