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

Reply via email to