Bug 799156 - normalize_struct_tm() does not normalize seconds,...

minutes, and hours correctly.

Fix proposed by Sherlock.
This commit is contained in:
John Ralls 2023-12-08 13:45:04 -08:00
parent 5005c3cac8
commit 966cef19aa

View File

@ -126,7 +126,7 @@ gnc_localtime_r (const time64 *secs, struct tm* time)
} }
static void static void
normalize_time_component (int *inner, int *outer, unsigned int divisor, normalize_time_component (int *inner, int *outer, int divisor,
int base) int base)
{ {
while (*inner < base) while (*inner < base)
@ -134,7 +134,7 @@ normalize_time_component (int *inner, int *outer, unsigned int divisor,
--(*outer); --(*outer);
*inner += divisor; *inner += divisor;
} }
while (*inner > static_cast<gint>(divisor)) while (*inner >= divisor + base)
{ {
++(*outer); ++(*outer);
*inner -= divisor; *inner -= divisor;