gecko-dev/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
README.html
RustRegex.h Bug 1794001 - Part 3: Combine RustRegex::Flags and RustRegexOptions, r=xpcom-reviewers,kmag 2022-10-13 21:46:55 +00:00
RustStringAPI.cpp
moz.build Bug 1794001 - Part 2: Add a c++ wrapper for the rust regex (rure) API, r=xpcom-reviewers,kmag 2022-10-13 21:46:55 +00:00
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
nsTLiteralString.cpp
nsTLiteralString.h
nsTPromiseFlatString.cpp
nsTPromiseFlatString.h
nsTString.cpp Bug 840706 - Part 2: Make ToDouble and ToFloat more spec-compliant, r=smaug,xpcom-reviewers,barret 2022-12-06 20:27:49 +00:00
nsTString.h Bug 840706 - Part 2: Make ToDouble and ToFloat more spec-compliant, r=smaug,xpcom-reviewers,barret 2022-12-06 20:27:49 +00:00
nsTStringComparator.cpp
nsTStringHasher.h
nsTStringRepr.cpp Bug 840706 - Part 2: Make ToDouble and ToFloat more spec-compliant, r=smaug,xpcom-reviewers,barret 2022-12-06 20:27:49 +00:00
nsTStringRepr.h Bug 840706 - Part 2: Make ToDouble and ToFloat more spec-compliant, r=smaug,xpcom-reviewers,barret 2022-12-06 20:27:49 +00:00
nsTSubstring.cpp
nsTSubstring.h
nsTSubstringTuple.cpp
nsTSubstringTuple.h
nsTextFormatter.cpp
nsTextFormatter.h
nsUTF8Utils.h

README.html

<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>