https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105502
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |redi at gcc dot gnu.org
Known to work| |8.3.0, 9.2.0
Summary|std::normal_distribution |[9/12/11/12/13 Regression]
|deserialization issue |std::normal_distribution
| |deserialization issue
Last reconfirmed| |2022-05-06
Keywords| |wrong-code
Known to fail| |10.1.0, 11.1.0, 12.1.0,
| |13.0, 8.4.0, 9.3.0
Status|UNCONFIRMED |ASSIGNED
Ever confirmed|0 |1
Target Milestone|--- |9.5
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Ouch, yes, thanks for the report.
This is the fix:
--- a/libstdc++-v3/include/bits/random.tcc
+++ b/libstdc++-v3/include/bits/random.tcc
@@ -1962,10 +1962,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
if (__is >> __mean >> __stddev >> __saved_avail)
{
if (__saved_avail && (__is >> __x._M_saved))
- {
- __x._M_saved_available = __saved_avail;
- __x.param(param_type(__mean, __stddev));
- }
+ __x._M_saved_available = __saved_avail;
+
+ if (__is)
+ __x.param(param_type(__mean, __stddev));
}
__is.flags(__flags);