Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4b8ff7c authored by Hans Boehm's avatar Hans Boehm
Browse files

Don't evaluate a lone decimal point to zero

Bug: 22917707

Make a constant consisting of just a decimal point produce an error
when evaluated.

Change-Id: I970c8b396894f301553171dad3c325ffac09ff57
(cherry picked from commit fa5203c0)
parent b7bd3488
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -217,12 +217,19 @@ class CalculatorExpr {
        }

        /**
         * Return BoundedRational representation of constant.
         * Never null.
         * Return BoundedRational representation of constant, if well-formed.
         * Result is never null.
         */
        public BoundedRational toRational() {
        public BoundedRational toRational() throws SyntaxException {
            String whole = mWhole;
            if (whole.isEmpty()) whole = "0";
            if (whole.isEmpty()) {
                if (mFraction.isEmpty()) {
                    // Decimal point without digits.
                    throw new SyntaxException();
                } else {
                    whole = "0";
                }
            }
            BigInteger num = new BigInteger(whole + mFraction);
            BigInteger den = BigInteger.TEN.pow(mFraction.length());
            if (mExponent > 0) {