]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Fix regression in std::format output of %Y for negative years
authorJonathan Wakely <jwakely@redhat.com>
Wed, 13 Dec 2023 12:00:45 +0000 (12:00 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Wed, 13 Dec 2023 12:31:49 +0000 (12:31 +0000)
The change in r14-6468-ga01462ae8bafa8 was only supposed to apply to %C
formats, not %Y.

libstdc++-v3/ChangeLog:

* include/bits/chrono_io.h (__formatter_chrono::_M_C_y_Y): Do
not round century down for %Y formats.

(cherry picked from commit ad537ccd525fd3af759febd6c0936f82de808a70)

libstdc++-v3/include/bits/chrono_io.h

index c422435f7f31dc3a3bedda0f86e2f9e8b8397677..c94adff3cec54c858eb23ddabba945906f2b95fe 100644 (file)
@@ -831,7 +831,7 @@ namespace __format
                {
                  __s.assign(1, _S_plus_minus[1]);
                  // For floored division -123//100 is -2 and -100//100 is -1
-                 if ((__ci * 100) != __yi)
+                 if (__conv == 'C' && (__ci * 100) != __yi)
                    ++__ci;
                }
              if (__ci >= 100) [[unlikely]]