forked from mirrors/gecko-dev
The main use of this method appears to be when parsing attributes with floating point values in HTML. By changing from PR_strtod, this change does have some semantic differences around edge-cases, though I've tried to keep it compliant with the wording in the standard. Here are some of the edge-cases I investigated: 1. We appear to build nspr with INFNAN_CHECK undefined, meaning that we did not parse strings like "inf", "infinity" and "nan" both before and after this change. 2. PR_strtod already ignored locale (built with USE_LOCALE undefined), so locale behaviour shouldn't have changed. 3. Neither PR_strtod nor the spec support hex floats, so I didn't enable them in double-conversion. 4. Leading whitespace is skipped by both PR_strtod and in the spec, so is skipped after this change. 5. Numbers too large to fit in a double (e.g. 2E308) were previously returned as inf or -inf by PR_strtod. The spec specifies that these values should return an error instead, so they have been changed to produce an error with this change. This is a web-visible change (<progress value=2E308 max=10> is indeterminate in Chromium and complete in Firefox before this change, it will be indeterminate for both after the change). 6. Parsing for floats & doubles are now handled seperately due to differences in the maximum and minimum representable values. Differential Revision: https://phabricator.services.mozilla.com/D148305 |
||
|---|---|---|
| .. | ||
| crashtests | ||
| moz.build | ||
| nsASCIIMask.cpp | ||
| nsASCIIMask.h | ||
| nsAString.h | ||
| nsCharTraits.h | ||
| nsDependentString.h | ||
| nsDependentSubstring.h | ||
| nsLiteralString.h | ||
| nsPrintfCString.h | ||
| nsPromiseFlatString.h | ||
| nsReadableUtils.cpp | ||
| nsReadableUtils.h | ||
| nsString.h | ||
| nsStringBuffer.cpp | ||
| nsStringBuffer.h | ||
| nsStringFlags.h | ||
| nsStringFwd.h | ||
| nsStringIterator.h | ||
| nsStringStats.cpp | ||
| nsStringStats.h | ||
| nsTDependentString.cpp | ||
| nsTDependentString.h | ||
| nsTDependentSubstring.cpp | ||
| nsTDependentSubstring.h | ||
| nsTextFormatter.cpp | ||
| nsTextFormatter.h | ||
| nsTLiteralString.cpp | ||
| nsTLiteralString.h | ||
| nsTPromiseFlatString.cpp | ||
| nsTPromiseFlatString.h | ||
| nsTString.cpp | ||
| nsTString.h | ||
| nsTStringComparator.cpp | ||
| nsTStringHasher.h | ||
| nsTStringRepr.cpp | ||
| nsTStringRepr.h | ||
| nsTSubstring.cpp | ||
| nsTSubstring.h | ||
| nsTSubstringTuple.cpp | ||
| nsTSubstringTuple.h | ||
| nsUTF8Utils.h | ||
| README.html | ||
| RustRegex.h | ||
| RustStringAPI.cpp | ||
<html> <!-- This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> <body> <h1><span class="LXRSHORTDESC">managing sequences of characters</span></h1> <p> <span class="LXRLONGDESC"></span> </p> </body> </html>