aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/src/c++17/floating_from_chars.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/libstdc++-v3/src/c++17/floating_from_chars.cc b/libstdc++-v3/src/c++17/floating_from_chars.cc
index a25ac5c..939c751 100644
--- a/libstdc++-v3/src/c++17/floating_from_chars.cc
+++ b/libstdc++-v3/src/c++17/floating_from_chars.cc
@@ -637,8 +637,13 @@ namespace
{
if (__builtin_isinf(tmpval)) // overflow
ec = errc::result_out_of_range;
- else // underflow (LWG 3081 wants to set value = tmpval here)
+ else if (tmpval == 0) // underflow (LWG 3081 wants to set value = tmpval here)
ec = errc::result_out_of_range;
+ else // denormal value
+ {
+ value = tmpval;
+ ec = errc();
+ }
}
else if (n)
{