1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 23:38:12 +00:00

LibJS: Fix use of "modulo" for negative values in balance_time()

This commit is contained in:
Linus Groh 2021-11-07 20:49:43 +00:00
parent 3d84fb64c3
commit b3ea7332b2

View file

@ -280,37 +280,37 @@ DaysAndTime balance_time(i64 hour, i64 minute, i64 second, i64 millisecond, i64
microsecond += nanosecond / 1000;
// 3. Set nanosecond to nanosecond modulo 1000.
nanosecond %= 1000;
nanosecond = modulo(nanosecond, 1000l);
// 4. Set millisecond to millisecond + floor(microsecond / 1000).
millisecond += microsecond / 1000;
// 5. Set microsecond to microsecond modulo 1000.
microsecond %= 1000;
microsecond = modulo(microsecond, 1000l);
// 6. Set second to second + floor(millisecond / 1000).
second += millisecond / 1000;
// 7. Set millisecond to millisecond modulo 1000.
millisecond %= 1000;
millisecond = modulo(millisecond, 1000l);
// 8. Set minute to minute + floor(second / 60).
minute += second / 60;
// 9. Set second to second modulo 60.
second %= 60;
second = modulo(second, 60l);
// 10. Set hour to hour + floor(minute / 60).
hour += minute / 60;
// 11. Set minute to minute modulo 60.
minute %= 60;
minute = modulo(minute, 60l);
// 12. Let days be floor(hour / 24).
u8 days = hour / 24;
// 13. Set hour to hour modulo 24.
hour %= 24;
hour = modulo(hour, 24l);
// 14. Return the Record { [[Days]]: days, [[Hour]]: hour, [[Minute]]: minute, [[Second]]: second, [[Millisecond]]: millisecond, [[Microsecond]]: microsecond, [[Nanosecond]]: nanosecond }.
return DaysAndTime {