fune/xpcom/string
Nika Layzell adfb1a6344 Bug 840706 - Part 2: Make ToDouble and ToFloat more spec-compliant, r=smaug,xpcom-reviewers,barret
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
2022-12-06 20:27:49 +00:00
..
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>