+2024-07-14 Bruno Haible <bruno@clisp.org>
+
+ strtold: Work around major mingw bugs.
+ * lib/strtod.c (HAVE_UNDERLYING_STRTOD) [USE_LONG_DOUBLE]: Set to 0 on
+ mingw versions before 10.0.
+ * doc/posix-functions/strtold.texi: Mention the mingw bugs.
+
2024-07-13 Bruno Haible <bruno@clisp.org>
stdlib: Support use of clang++ on Ubuntu.
This function fails to set @code{errno} upon underflow on some platforms:
@c https://cygwin.com/ml/cygwin/2019-12/msg00072.html
Cygwin 2.9.
+
+@item
+This function leaks memory on mingw 5.0
+and allocates an unbounded amount of stack on mingw 9.0.
@end itemize
Portability problems not fixed by Gnulib:
# elif STRTOLD_HAS_UNDERFLOW_BUG
/* strtold would not set errno=ERANGE upon underflow. */
# define HAVE_UNDERLYING_STRTOD 0
+# elif defined __MINGW32__ && __MINGW64_VERSION_MAJOR < 10
+ /* strtold is broken in mingw versions before 10.0:
+ - Up to mingw 5.0.x, it leaks memory at every invocation.
+ - Up to mingw 9.0.x, it allocates an unbounded amount of stack.
+ See <https://github.com/mingw-w64/mingw-w64/commit/450309b97b2e839ea02887dfaf0f1d10fb5d40cc>
+ and <https://github.com/mingw-w64/mingw-w64/commit/73806c0709b7e6c0f6587f11a955743670e85470>. */
+# define HAVE_UNDERLYING_STRTOD 0
# else
# define HAVE_UNDERLYING_STRTOD HAVE_STRTOLD
# endif