libstdc++: Fix arithmetic bug in chrono::year_month::operator+
authorPatrick Palka <ppalka@redhat.com>
Thu, 27 Aug 2020 18:11:24 +0000 (14:11 -0400)
committerPatrick Palka <ppalka@redhat.com>
Thu, 27 Aug 2020 18:11:24 +0000 (14:11 -0400)
commit71e9716137d47872f30f933ff99ba9ef3df1665c
tree56ed98ef11b7279b60c08c1d43d45fe837f3d368
parent7b743c67f04471a0129390ad2808e61e5538e0d3
libstdc++: Fix arithmetic bug in chrono::year_month::operator+

This fixes the months-based addition for year_month when the
year_month's month component is 0.

libstdc++-v3/ChangeLog:

* include/std/chrono (year_month::operator+): Properly handle a
month value of 0 by casting the month value to int before
subtracting 1 from it so that the difference is sign-extended in
the subsequent addition.
* testsuite/std/time/year_month/1.cc: Test adding months to a
year_month whose month component is below or above the
normalized range of [1,12].
libstdc++-v3/include/std/chrono
libstdc++-v3/testsuite/std/time/year_month/1.cc