Ticket #5983: real_utils.diff

File real_utils.diff, 967 bytes (added by Daniel Krügler <daniel.kruegler@…>, 8 years ago)

SVN patch file

  • .hpp

    old new namespace boost { namespace spirit { namespace kar  
    105105                    if (exp != -dim)
    106106                        ++exp;
    107107                    dim = -exp;
    108                     n *= spirit::traits::pow10<U>(exp);
     108                    // detect and handle denormalized numbers to prevent overflow in pow10
     109                    if (exp > std::numeric_limits<U>::max_exponent10)
     110                    {
     111                        n *= spirit::traits::pow10<U>(std::numeric_limits<U>::max_exponent10);
     112                        n *= spirit::traits::pow10<U>(exp - std::numeric_limits<U>::max_exponent10);
     113                    } else
     114                        n *= spirit::traits::pow10<U>(exp);
    109115                }
    110116            }
    111117