21 lines
592 B
Diff
21 lines
592 B
Diff
|
--- a/libstdc++-v3/src/c++17/floating_from_chars.cc
|
||
|
+++ b/libstdc++-v3/src/c++17/floating_from_chars.cc
|
||
|
@@ -495,10 +495,16 @@
|
||
|
from_chars(const char* first, const char* last, __ieee128& value,
|
||
|
chars_format fmt) noexcept
|
||
|
{
|
||
|
+ errc ec = errc::invalid_argument;
|
||
|
+#if _GLIBCXX_USE_CXX11_ABI
|
||
|
buffer_resource mr;
|
||
|
pmr::string buf(&mr);
|
||
|
+#else
|
||
|
+ string buf;
|
||
|
+ if (!reserve_string(buf))
|
||
|
+ return make_result(first, 0, {}, ec);
|
||
|
+#endif
|
||
|
size_t len = 0;
|
||
|
- errc ec = errc::invalid_argument;
|
||
|
__try
|
||
|
{
|
||
|
if (const char* pat = pattern(first, last, fmt, buf)) [[likely]]
|